作者:许继征
概述:
屏幕内容编码是从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 = 128x128 | VPDU = 64x64 | CTU = 64x64 | VPDU = 64x64 | CTU = 32x32 | VPDU = 32x32 |
图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的对应。
图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>0 (1)
横向也类似。
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] :
而对于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] :
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!