H.266/VVC 标准之面向屏幕应用的编解码技术

avatar
技术运营 @北京字节跳动科技有限公司

作者:许继征

概述:

屏幕内容编码是从H.265/HEVC起引入的面向屏幕应用的编解码技术。H.265/HEVC包含了Hash-based Motion Estimation、Intra Block Copy、Transform Skip、Block-based Differential Pulse-Code Modulation、Adaptive Motion Vector Resolution、Palette Mode和Adaptive Colour Transform。除了删除了在序列级别的Adaptive Motion Vector Resolution(在序列级别规定了是否需要开启帧级别的控制,在H.266/VVC里面被应用更广泛的工具取代),其它的工具在H.266/VVC里面有一系列调整。本文将介绍这一系列调整。

1. 介绍

针对屏幕内容的应用,最早先在标准里提出了Screen Content Coding的概念 [1] 。并在H.265/HEVC、AV1 [2] 和H.266/VVC里引入了众多的编解码工具。本文将介绍H.266/VVC中的主要屏幕编解码工具。

2. Hash-based Motion Estimation

在涉及屏幕内容时,通常下一帧的一部分会是上一帧的精确拷贝。利用这个特点我们可以将屏幕内容分开处理,来快速判断是否有精确匹配 [3]。在参考帧的原始信号上,计算出对每个位置的4x4~64x64的循环校验码即CRC值,再在当前帧分块的位置算出对应块的原始值的CRC值。通过比较这两个CRC值可以得到是否精确匹配。这部分工具是非标准的,但对应用非常重要。

3. Intra Block Copy

Intra Block Copy简称为IBC,针对的是本帧的非相邻块的预测。IBC的预测单元是Coding Unit,但只对64x64及以下的Coding Unit用。H.266/VVC里面新增加的是VPDU(Virtual Pipeline Data Units)内存的重利用和Virtual buffer的概念。VPDU是片上内存的基本单元,和CTU的对应关系如下表:

表1. CTU和VPDU的对应关系:

CTU = 128x128VPDU = 64x64
CTU = 64x64VPDU = 64x64
CTU = 32x32VPDU = 32x32

12.png

图1. CTU=128x128的时候的Virtual buffer view和Picture view

图1所示的是CTU=128x128的时候的Virtual buffer view和Picture view的对应,其中每个方块对应的是64x64的luma块。灰色的块是invalid区域(有任何一个sample落入该区域就算是invalid的)、蓝色是当前VPDU、绿色是可以参考的VPDU[4]。 下图显示的是CTU=64x64的时候的Virtual buffer view和Picture view的对应。

13.png

图2. CTU=64x64的时候的Virtual buffer view和Picture view

所以VPDU(64x64)的内存只需要维持4个。另外,对于I帧亮度和色度用不同的分块树的情况禁止了色度的IBC的,相对应的色度块就只能选其它的帧内模式。还有,对Local dual tree(P或B帧里对应的防止块过小的限制)也不能用色度的IBC。

4. Transform Skip

Transform Skip在Screen Content Coding里面应用很广。在H.266/VVC里,作为一个变换单元的工具,Transform Skip做了额外的设计。在解码端Transform Skip先是从左往右、从上往下扫描每个子块,再在子块内部做对角线扫描 [5]。对每个非0系数至多会对应扫描5遍,分别对比了小系数的幅度编码。相应地设置一个跟面积为1.75倍的限额,超过了这个限额就全部转为无上下文的编码。

5. Block-based Differential Pulse-Code Modulation

Block-based Differential Pulse-Code Modulation,简写为BDPCM,是应用在帧内预测的模式。应用时,都会推断成Transform Skip,并且有横向的或者是纵向的区别。纵向模式时候,解码过程中残差r(i,j)会减去上一行的重构值

r(i,j)=r(i,j)+r'(i-1,j),i>01

横向也类似。

6. Adaptive Colour Transform

Adaptive Colour Transform应用于4:4:4的GBR格式(其它格式也能用,但好处不大)。在解码端Adaptive Colour Transform是应用于解码残差和重构JCCR、以及反变换之间的步骤。当Coding Unit的相应标志位为1时(此时只可能是三个分量都是一个解码树),解码器在残差域进行如下操作:

tmp = Y – (Cg >> 1)
G  = Cg + tmp
B  = tmp – (Co >> 1)
R  = B + Co                                  
(2)             

其中Y、Cg、Co分别代表三个分量的残差值,R、G、B分别代表恢复的三个分量的残差值。为了平衡能量,反量化的时候QP分别加上了-5、1和3。

7. Palette Mode

Palette Mode是针对4:4:4 Profile(包括4:4:4 Profile下的4:2:0和4:2:2)设计的,与H.265/HEVC下的Palette mode类似。在Palette Mode里面,可以有1个(只是Luma)、2个(只是Chroma)和3个(Luma和Chroma的联合编码)。对于3个预测平面(定义为一个三元组列表,每一帧的初始为空)的设置,相对应的最大预测长度为63,相对应的最大的每个块的索引值是31;对于1或者2这两个值分别为31和15。跟HEVC一样,不管是几个预测平面,块里面都是分横向或者纵向的蛇形扫描。最后,Palette Mode会对Coding Unit进行不大于16个样本的分割,然后去扫描 [6]

8. 性能

针对4:2:0格式,H.266/VVC Main 10档次有如上述2、3、4、5小节中介绍的编码工具可以用,而H.265/HEVC的Version 1相对应的只有4x4的Transform Skip可以用。性能对比如下表。

表2: VTM-9.0 [7] 对比HM-16.21 [8], 4:2:0格式 [9]图1.jpeg

而对于4:4:4格式,H.266/VVC Main 10 4:4:4档次能用上述2、3、4、5、6、7小节中介绍的编码工具。性能对比如下表。

表3: VTM-9.0对比HM-16.21+SCM-8.8 [8], 4:4:4格式 [9]图2.jpeg