解析H.266/VVC视频编码标准的关键技术

自上世纪90年代开始,MPEG,ITU_T发布第一代视频编码标准MPEG-1、H.261之后,过去30多年,两大标准化组织又陆续发布了多代视频编码标准,目前市场中主流的编码标准是H.264/AVC和H.265/HEVC。其中H.265/HEVC自发布以来,始终未能全面代替上一代标准H.264/AVC,其中专利是一座无法逾越的大山,总共有40多家公司持有H.265/HEVC专利,主要分为三大专利池MPEG LA、HEVC ADVANCE和VELOS MEDIA(H.265/HEVC的专利分布情况如图1),专利授权情形复杂,还有重复收费的情况,导致各大设备、内容生产商推广H.265/HEVC的意愿不是很积极。

bfb0a2e34f1cbcbd1502b537b4749fbf.jpeg

图1:H.265/HEVC专利分布情况

鉴于此,有些厂家将希望寄托在了下一代编码标准H.266/VVC之上。

H.266/VVC又叫多功能视频编码(Versatile Video Coding,简称VVC),在2015年10月,MPEG和VCEG成立了联合视频探索小组(Joint Video Exploration Team, JVET)提出,于2020年7月6日最终确定。H.266/VVC具有优秀的编码性能,编码同样质量的视频,H.266/VVC相比上一代标准H.265/HEVC可以节省约50%的码率,同时,解码复杂度不超过2倍。码率降低50%这一点,对于内容商来说,还是很有诱惑力的,其可以节省大量的带宽。在国内,目前推广H.266/VVC比较积极的厂商是Bytedance和Tencent,当前抖音中H.266/VVC格式的视频占比已经不少了,后续应该会全面切换成H.266/VVC。因为他们是内容商,对于低码率的需求比较高,同时,从H.266/VVC的专利持有情况(如图2),也可看出一些端倪:    

de04c5723610f5cc93032f666bbad82a.png    

图2:H.266/VVC专利分布情况   

对于国外厂商来说,因为有AOM的存在,由Google牵头推广的AV1编码标准是免版税的,所以他们更倾向于推广AV1,AV2编码,如Meta,Youtube等厂商。

对于OEM或者QCOM、MTK这样的平台商来说,主要考虑的是成本问题,推广H.266/VVC需要增加硬件成本,消费者会不会买单?国内H.266/VVC、国外AV1,芯片的演进路线该怎么走,都需要规划。据平台商透漏的消息,在2026年的手机旗舰平台上,会集成H.266/VVC格式来试试水。下面我们具体介绍下H.266/VVC编码的一些重要特性以及变化。

从原理上讲,H.266/VVC编码标准的框架并没有革命性的改变。在标准制定的过程中,JVET小组也探索过各类神经网络编码工具,但是其编码复杂度太高,最终未能纳入第一版标准。所以H.266/VVC仍采用混合编码框架(如图3):包括帧内预测,帧间预测,变换,量化,编码以及环路滤波等。    

0d5e413e8724eefd06797fe6b202a25d.png

图3:H.266/VVC编码框架

一、编码结构

一个H.266/VVC编码码流包含一个或多个视频编码序列CVS(Coded Video Sequence),CVS类似于H.265中GOP的概念,每个CVS以IRAP(帧内随机接入点,Intra Random

Access Point)图像或者GDR(逐渐解码刷新,Gradual Decoding Refresh)图像开始,可以作为随机接入点对视频流进行解码。每个CVS包含一个或多个AU(访问单元,Access Unit),这些AU按照解码顺序排列。每个AU中包含一个或者多个PU(图像单元,Picture Unit),这些PU是同一时刻的,包含一副完整的图像。PU按照层来划分,每层的PU是特定的分辨率,或者多视点视频的某一视点、所以一个CVS中所有的同层PU组成了CLVS(编码视频序列层,Coded Layer Video Sequence)。最简单的情况,编码码流中只有一层时,视频中就只有一种规格。    

d9b3e6008fd17cf3bd24d25e6979ce98.png

图4:CVS结构

对于编码图像PU来说,又可以划分为更小的编码单元,每个PU可以划分为一个或者多个Slice(片),每个Slice由相同大小的CTU(Coding Tree Unit)组成,每个CTS又划分为更小的CU(Coding Unit)。Slice根据编码类型可以分为I Slice,P Slice和B Slice3类。

259818b9500ffb954f00e736b94cfc3f.png    

图5:Slice、CTU和CU关系

在H.266/VVC中,也使用了Tile的概念,使用Tile的目的主要是为了增强并行处理能力。一副图像可以划分为多个Tile,每个Tile包含整数个CTU,可以独立解码。Tile的划分不要求大小相同和均匀分布。它和Slice的划分目的不同。每次Slice和Tile划分时,要满足如下条件之一:

(1)一个Slice中的所有CTU属于同一Tile

(2)一个Tile中的所有CTU属于同一个Slice。

二、视频参数集

H.266/VVC标准中包含多种视频参数集,这些参数集在视频编码和解码过程中发挥着至关重要的作用:

(1)VPS(视频参数集,Video Parameter Set)

VPS主要用于承载视频分级信息,表达PU间的依赖关系,支持可分级视频编码或多视点视频编码。它包含了每个PU的子层标识、子层间的相互依赖关系、输出层集合以及会话所需的关键信息等。

(2)SPS(序列参数集,Sequence Parameter Set)

SPS包含CVS的共用编码参数,一旦被CVS引用,该CVS中所有编码图像都使用该参数集的编码参数。它涵盖了编码格式的信息、编码参数信息、与参考图像相关的信息、档次、层和级相关参数、时域分级信息以及可视化可用信息等。

(3)PPS(图像序列集,Picture Parameter Set)

PPS用于表示图像的共同编码参数,可被图像内所有Slice使用。它包含编码工具的可用性标志、量化过程相关语法元素、Tile相关语法元素、去方块滤波相关语法元素、Slice头中的控制信息以及编码一幅图像时可以共用的其他信息等。    

(4)PH(图像头,Picture Header)

PH与PPS相似,承载频繁变换的编码参数信息,如IRAP/GDR图像标识、Slice类型允许、图像序列、去方块滤波、SAO参数等。PH主要作用于当前图像的编码和解码过程,提供必要的参数信息

(5)APS(自适应参数集,Adaptive Parameter Set)

APS主要包含大量数据的信息,如传递自适应环路滤波参数ALF、参数映射与色度缩放参数LMCS、量化矩阵参数等。APS适用于需要动态调整编码参数以适应不同场景和需求的情况。

三、Profile、Tier和Level

H.266/VVC同H.265/HEVC一样,同样使用了Profile(档次)、Tier(层)和Level(级别)的概念。标注中提出的范围如下:    

3402a8fa084dd253d443cf1bdbabfd60.png

四、帧内预测

在H.266/VVC中,以CU作为基本运算单位进行帧内预测。通过参考像素获取,计算预测值以及预测值修正等步骤生成预测像素。同上一代编码标准H.265/HEVC相比,H.266/VVC采用了一些新的技术和工具,性能、质量方面有了明显的改进和创新:

(1)扩展角度预测模式:基于角度的方向性帧内预测模式从HEVC中的33个增加到了65个,加上原有的DC(直流平均)和Planar(平面加权平均)模式,总共有67个预测模式。

(2)针对长方形块的宽角度模式:对于长方形的CU块,引入了宽角度预测模式,以应对正方形CU块在45°或﹣135°附近预测角度时参考样本超出范围的问题。通过重新映射预测角度,利用另一侧的参考样本进行反向预测,从而提高预测性能。    

(3)多参考行技术:采用了多参考行技术,允许在进行帧内预测时使用多行参考像素。除了可以使用参考行0外,还可以使用参考行1和参考行2,从而更有效地利用空间相关性

(4)矩阵加权平均技术(MIP):矩阵加权平均技术是一种基于神经网络思想的帧内预测技术。通过离线训练得到的多个权重矩阵,对当前PU的左侧和上方的重建像素进行矩阵向量乘法和线性插值,生成最终的预测像素

(5)位置相关的组合帧内预测技术(PDPC):为了补偿传统预测模式利用空间冗余性的不足,H.266引入了位置相关的组合帧内预测技术。根据当前像素的位置及帧内预测模式的角度,自适应地选取反方向角度上的参考像素信息,与原有角度的预测做加权平均,以提高预测性能。

(6)子划分技术(ISP):帧内预测子划分技术允许将当前CU进一步划分为多个子块,然后分别对每个子块进行预测、变换、量化重建等。这样可以利用前一个子块的重建像素作为后续子块的参考,提高预测精度。

五、帧间预测

H.266/VVC的帧间预测依然采用基于块的帧间运动补偿技术,采用了如下新方法。

(1)基于历史信息的运动矢量预测(HMVP):HMVP利用视频序列中的时间连续性,通过参考已编码帧的运动信息来预测当前块的运动矢量。这种方法能够减少运动估计的计算量,提高编码效率。    

(2)带有运动矢量差的Merge技术(MMVD):MMVD在常规Merge模式的基础上增加了运动矢量差值的编码,使得运动矢量的表示更加精确。这种技术能够在保持较低码率的同时,提高预测的准确性。

(3)几何划分帧间预测技术(GPM):GPM允许使用非水平或垂直直线对矩形CU进行划分,每个子区域可以使用不同的运动信息进行运动补偿。这种方法能够更好地适应视频内容中的物体边界,提高预测准确度。

(4)对称运动矢量差分编码(SMVD):SMVD针对双向预测的情况,采用对称编码模式,仅需要编码一个方向的运动矢量差值。这种方法能够减少码率开销,同时保持较高的预测准确性。

(5)CU级的自适应运动矢量精度(AMVR):AMVR允许根据不同CU的特性动态调整运动矢量的精度。这种灵活性能够更好地适应不同分辨率和帧率的视频内容。

(6)基于子块的时域运动推导模式(SbTMVP):SbTMVP将当前编码单元分为大小相同的子块(如8×8亮度子块),每个子块的运动矢量单独进行推导。这种方法能够更精细地捕捉视频中的运动细节

(7)仿射运动补偿预测(AMCP):AMCP通过引入仿射变换模型来更精确地表示像缩放和旋转这样的高阶运动。这种方法能够提高对复杂运动场景的预测准确性。

(8)双向光流(BDOF)和光流预测细化(PROF):BDOF通过分析连续帧之间的光流信息来优化运动补偿。PROF则进一步细化光流预测结果,提高预测准确性。这两种技术的结合能够显著提升帧间预测的性能。    

六、变换编码

变换编码是将空间域的像素转换至变换域,以变化系数的方式表示。常见的变化方法如DCT,DST。H.266/VVC除了沿用传统的DCT-II变换,还采用了如下新技术:

(1)多核变换选择(Multiple Transform Selection, MTS):除了HEVC中使用的DCT-II,VVC还引入了新的变换矩阵DST-VII和DCT-VIII,提出了新的64点DCT-II变换核以及新的8点、16点、32点DST-VII和DCT-VIII变换核,MTS通过率失真选择,从多种变换组合中选出最优的变换类型。

(2)高频调零:对于一个尺寸为MxN的变换块,如果M等于64时,只保留左边的32列变换系数;类似地,若N等于64时,则只保留上方的32行变换系数。这种处理方式可以有效降低计算复杂度,同时保持较高的编码效率。

(3)子块变换(Sub-Block Transform, SBT):当一个CU使用帧间预测模式时,可以选择对该CU进行子块变换。SBT模式将CU块划分为两个子块后对其中一个子块进行变换操作。SBT一共有8种模式,分为垂直SBT变换(SBT-V)和水平SBT变换(SBT-H)。

(4)低频不可分变换(Low-Frequency Non-Separable Transform, LFNST):LFNST是一种二次变换技术,仅对主变换系数的低频部分进行不可分变换,以进一步提高去相关效果。LFNST的应用可以显著提高视频编码效率。    

(5)色度残差联合编码(Joint Coding of Chroma Residuals,JCCR):在编码端,JCCR通过对Cb和Cr残差信号进行变换处理,生成一个联合残差信号;在解码端,再根据这个联合残差信号推导出原始的Cb和Cr残差信号。

七、量化

H.266/VVC支持普通标量量化和依赖量化。同时将量化器的选择留给编码器自行决定。使得编码器可以选择性能更优的量化方法。

八、熵编码

熵编码是将前边步骤量化后的变换系数、运动适量、预测模式等信息作为输入,去除信息中的统计冗余。H.266/VVC标准中的熵编码采用了核心CABAC引擎、变换系数残差编码、变换跳过残差熵编码等技术,并进行了创新和优化。

(1)多假设概率更新模型:在H.266中,CABAC(Context Adaptive Binary Arithmetic Coding)引入了多假设概率更新模型,以提高概率估计的精度。这种模型通过结合多个假设来更准确地预测编码符号的概率,从而优化编码过程。

(2)上下文模型独立更新:上下文模型的概率索引(pStateIdx0和pStateIdx1)以不同的适应速率独立更新,这些速率基于相关bin的统计信息预先训练。

(3)残差编码结构:H.266/VVC为变换系数和变换跳过块的残差设计了两种不同的编码结构。变换系数的残差编码采用上下文编码,而变换跳过块则采用不同的方法,以优化编码效率。    

(4)旁路编码:在变换系数的残差编码中,H.266/VVC采用了Golomb-Rice二进制化和旁路编码的方法。这种方法通过结合Golomb编码和Rice编码的优点,实现了高效的二进制表示,减少了编码冗余。

九、环路滤波

环路滤波(In-Loop Filtering)是提高视频主客观质量的有效工具。H.266/VVC仍采用基于块的混合编码框架,方块效应,振铃效应颜色偏差等常见编码失真问题依然存在。为了降低此类失真影响,H.266/VVC主要采用了如下技术:

(1)自适应局部滤波ALF(Adaptive Loop Filter):采用基于块的滤波调整方法,对亮度分量和色度分量使用不同形状的滤波器模板。它根据视频内容的局部活动性和方向性,选择最优的滤波系数进行滤波处理,以减少原始图像像素和重建图像像素之间的均方误差(MSE)。

(2)去块滤波DBF(De-Blocking Filter):增强亮度和色度的滤波强度,并引入了4x4亮度去块网格。   扩展了去块滤波的参数表,以适应更复杂的视频内容。针对采用子块编码技术的子块边界进行滤波,以提高编码效率。

(3)样本自适应偏移SAO(Sample Adaptive Offset):通过对亮度分量应用分段线性模型,提高视频的编码效率。基于亮度的色度残差缩放,补偿亮度信号映射对色度信号的影响。    

   文档前边大概介绍了H.266/VVC编码步骤,以及每个步骤用到的关键技术或者新技术。但是H.266/VVC定位为多用途编码的标准,除了通用的编码工具外,还有针对特定场景的编码工具,比如全景视频(360度全包围的球面视频)编码和屏幕视频(如桌面分享、文档延时,游戏动画等)编码。这些编码工具为后续的应用开发提供了更多的想象空间。限于篇幅,本文不再展开。

   综上所述,H.266/VVC是新一代非常优秀的编码标准,也有广阔的应用空间。在后续的生态中,能不能表现出其强大的生命力。让我们拭目以待。         

参考资料:

1.https://blog.chiariglione.org/a-crisis-the-causes-and-a-solution/

2.https://zh.wikipedia.org/wiki/%E5%A4%9A%E5%8A%9F%E8%83%BD%E8%A7%86%E9%A2%91%E7%BC%96%E7%A0%81

3.https://www.iam-media.com/article/who-leading-the-vvc-technology-race

4.ITU-T H.266 (V3) (09/2023):https://www.itu.int/rec/T-REC-H.266-202309-I/en

5.https://blog.csdn.net/BigDream123/article/details/107963471    

6.https://zhuanlan.zhihu.com/p/397518152

7.https://blog.csdn.net/bigdream123/article/details/119742552

8.https://zhuanlan.zhihu.com/p/568330537

9.https://blog.csdn.net/SoaringLee_fighting/article/details/109174515

10.《新一代通用视频编码H.266/VVC:原理、标准与实现》——万帅 霍俊彦 马彦卓/著

26461489ce8e7bf3c0b5a0bedc9a8744.jpeg

WebRTC音视频同步原理与实现详解(上)

WebRTC音视频同步原理与实现详解(下)

ARM64裸机操作系统开发实践

193d91e436e7c2a5bceaad76ba778ea3.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

OPPO内核工匠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值