ICIP2020:VVC实时解码器实现( 二 )


变换阶段(包括反量化、一次和二次变换)仅对反量化和一次变换进行SIMD优化 。后者是作为一个常规的整数矩阵乘法实现的 。利用通常的系数稀疏性 , 除了最小的块之外 , 它优于所有DCT-II的快速实现 , 其优势通常适用于VVC中可用的所有变换类型 。
上图Fig.3是特定处理阶段运行时间占比 。、other和Mi-Der相对时间都是增加的 。长远来看 , 那些非基于像素操作的优化将是一个关键方面 。
总的来说 , 在现代处理器上SSE42可以达到69%的时间节省 , AVX2可以达到73%的时间节省 。

ICIP2020:VVC实时解码器实现

文章插图
并行化
CPU通常有多个核可以同时执行不同的任务 。每帧可以独立解析(parse) , 且为了保持特定帧率解析需要花费更多时间 。为了防止工作线程饥饿可以多帧并行解析 。这引入了一个轻微的解码器延迟 , 可以通过设置解析帧缓冲区的大小进行配置 。
当一个解析帧可以重建时 , 更高并行度的重建过程就开始了 。它分为基于CTU和基于CTU行的任务 。为了协调任务 , 每个CTU根据CTU下一个将要执行的阶段分配一个状态 。当一个阶段被执行之后 , CTU被分配下一个状态 , 当依赖项被解析时可以执行 , 如下所述 , 
每个CTU都会分配一个task。线程池扫描CTU的task  , 查找那些已解析所有依赖关系的任务 , 并执行所有阶段 , 直到后续依赖关系不满足为止 。当所有CTU都完成了ALF处理阶段后 , 一帧就解码完成了 。
上图Fig.4展示了与VTM及优化的解码器(未进行并行优化)相比的加速效果 。优化的解码器与参考软件相比可以节省50%的时间 。这归因于更优的和更完整的SIMD实现以及减少的结构开销 。
解码的伸缩性相当好 , 当使用测试平台上所有可用的8个线程时 , 实现了80%的运行时间减少 。虽然这可能是更优的 , 但移动平台在持续的高负载下往往会减少CPU时钟 。
相比于VTM , 当使用优化实现时解码时间可以减少50-90% , 这取决于处理线程的数量 。下图Fig.5展示了对于高清视频 , 仅使用2个或3个CPU核即可实现60fps实时解码 。对于超高清视频 , 使用4个CPU核可以在多种比特率实现30fps解码 。当使用所有CPU核时可以实现50fps实时解码 。
更详细的内容请参考论文《 A LIVEFOR THEVIDEO (VVC) CODEC》
【ICIP2020:VVC实时解码器实现】感兴趣的请关注微信公众号Video