本文是来自video@scale 2019的演讲,演讲者是Ioannis Katsavounidis,是Facebook的研究科学家。演讲主题是视频编码中编码和计算效率对比。
此次演讲主要包括五个部分:
1. 视频编码的历史回顾
2. 视频编码中的多线程
3. 时间分片作为视频编码的“均衡器”
4. 一些实验
5. 实验结论
作者首先简单回顾了以下视频编码的历史发展:从一开始面向专业内容的编码,到面向消费者视频内容的编码,进而发展为面向流媒体的云端编码,编码面向的对象也从单片发展为块和镜头。
作者接着介绍了多线程在视频编码中的优缺点:多线程处理可以很很高的减少延迟但是却容易引起比特率的损失,而且由于线程之前的同步问题,会导致计算资源利用率降低。现存的视频编码多线程处理方式有:帧级并行处理,片级并行处理,波前并行处理和开环并行处理等方式。并且作者对他们进行了一一介绍。
为了解决前述并行处理方式存在的一些问题,我们可以减小每一个并行处理的数据量,从chunk级别到GOP级别再到shot级别,每一个并行单元变得更加轻便,这就允许更多的并行处理可以同时进行,并且提高计算资源的利用率。这也就是第三部分的主题,合理利用时间分片作为视频编码的均衡器。并且作者还对云端视频编码这一应用场景,总结了不同层级的并行处理的优缺点。
接着作者介绍了他进行的一组实验,并给出了具体的实验设置。作者从质量预设,CPU负载,比特率和计算复杂度的权衡等方便给出了实验结果。
在最后,作者总结了此次实验得出的几个结论:
a) 计算复杂度/压缩效率域中的凸包方法产生最佳编码器/预设操作点;
b) 基于时间的并行处理提供了最大的优势,同时具有最少的缺点;
c) CPU的超额负载(大约15%)可提高多线程编码的计算效率(大于10%);
d) 单线程比4线程执行可提供8%的额外计算收益;
e) 质量指标计算/收集会增加视频编码的大量开销,尤其是对于快速预设而言。
附上演讲视频: