文章插图
将两大类编码器放在一起,更容易看出彼此之间的差异性,图中展示了五个维度,分别是:高压缩比、低延迟、低复杂度、高质量、平台友好性 。将五个维度进行比较,分发域的编码如图所示,它的特点是高压缩比,但延迟和复杂度比较大,质量没有制作域那么高,相对来说压缩比就比较大 。
帧内标准如JEPG、JPEG2K、XAVC、WebP,在延迟性和复杂度方面要好些,但代价是压缩比要差些,因为它应用的是专业领域场景,所以质量和码率比较高 。
JPEG XS 是JPEG阵营过去两年推出的一个标准,强调复杂度和速度,它的性能在低延迟、低复杂度方面表现比较优秀,但压缩比较差 。由图可知,要根据不同应用场景做出均衡性选择 。
2.2 编码延迟的构成

文章插图
编码延迟是指从视频单元(通常是帧)采集到编码完成生成码流所消耗的时间 。公式中的max是表示以编码单元中花费时间最大的模块为延迟时间 。
编码延迟的来源主要包括三部分:一是视频帧参考关系,二是编码流水线的设计,三是编码模块的复杂度 。
2.2.1 低延迟参考结构

文章插图
左图展示的是HEVC RA模式,典型的编码器一般使用双向B帧,在提高压缩率的同时会带来帧重排序延迟,在HEVC的典型RA模式中,双向参考关系额外引入了3帧延迟 。
右图展示的是HEVC的LDP模式,如果只考虑延迟,HEVC的LDP模式只使用P帧,适用于低延迟场景,其单向参考关系不引入额外的延迟,但是带来了9%~42%的编码性能损失 。
2.2.2 低延迟编码帧结构

文章插图
周期性帧内刷新(PIR)编码结构是在LDP模式的基础上进一步降低延迟,被很多商业编码器所支持,被称为超低延迟的编码配置 。
如图所示,它的原理是将一帧切成四个纵向的条块,每隔四帧就可刷新一遍 。
它的特点主要有:一是常用的超低延迟配置模式,输出码率平缓,缓冲区溢出概率小 。二是可以确保在一个刷新周期内完全恢复错误 。三是刷新的频率方向,可以根据视频内容进一步优化 。
2.2.3 编码流水线优化

文章插图
编码器的整体架构决定了编码器的延迟和并行度,主要分为三种:帧处理、块处理、条处理 。
帧处理是指对每个运动估计进行预测,编码器处理的模块是以帧为单元的,它会将整帧运动估计处理完,再进行运动补偿,在MPEG2这种比较简易的编码器中经常使用这种结构 。
块处理相当于单线程参考编码器中的小逻辑,将每个CTU或每个宏块逐步推送到运动估计、预测等部分,X-循环是指每个块里会进行不同模式的选择,是不同模式的循环 。Y-循环是指所有的块可以再循环一遍 。其中每块中的宏块可以独立输出,不需要等整个帧处理完,所以它的好处是输出粒度小 。但如果将块级的编程变成高并发、流水化结构就比较困难,因为粒度小,想做到流水化结构,处理单元要足够多 。需要说明,编解码上下文很关键,切断上下文则编码预测性能会受到大的影响 。
条处理是基于两者之间的处理,每一个内循环的粒度是以条块为基础,外循环是不同条块之间流水化推进 。同时,运动估计和运动补偿耦合比较好适合于整体计算,可以将运动估计和预测放到一个计算单元上,其余的部分组合到另一个上,这样可以增加多级流水的处理 。
这三种处理方式属于任务级分解,也是并发、并行化操作 。此外,还有数据级分解,就是数据被切割并分配给不同的处理器 。右图是在处理4K时可以切成多个高清进行处理,可以用到四种方案:帧级并行、slice级并行、tile级并行、波前并行处理 。在实际的编码中,并发、并行化操作中任务级分解和数据级分解是混合使用的 。
2.2.4 低延迟并行码率控制

文章插图
一旦变成并行流水化,除了各个基本模块的调度,还要涉及整体码率控制的调整 。码流的平稳程度是影响编码缓冲区延迟的重要因素,缓冲区上溢会造成数据丢失;缓冲区下溢会造成编码器无法得到数据,进而使得视频卡顿 。在条/块级并行编码方案中,码率控制模型需要重新优化设计 。
推荐阅读
- 诸病从寒起 寒从足下生 冬季养生先暖脚
- 冷锋过境严防心脏病突发 下雪天需警惕雪盲症
- |疫情当下的宜兴紫砂壶是怎样的呢?
- 元宇宙怎么下载?
- 一只黑壳虾能繁殖出多少只小虾 黑壳虾一次下多少小虾
- 地球另一端的人为什么不是倒立的 为什么地球另一端的人不会掉下来
- 《地下城堡3》塔姆与维德怎么杀?
- 黑壳虾繁殖下来一般多久长大 黑壳虾繁殖过程图
- 雪的世界如此安静 下雪为什么会变安静
- 观赏虾抱卵多久下小虾图片 虾子抱卵到孵化
