H266/VVC标准的编码结构介绍

概述

CVS: H266的编码码流包含一个或多个编码视频序列(Coded Video Swquence,CVS),每个CVS以帧内随机接入点(Intra Random Access Point, IRAP)或逐渐解码刷新(Gradual Decoding Refresh, GDR)图像开始。CVS是时域独立可解码的基本单元。
CLVS: 编码视频序列层,当编码码流只包含一层时,CVS与CLVS一致。
AU: 访问单元
PU: 图像单元,不同于H265里的预测单元PU,在H266中的每个PU为一幅图像,包含一个或多个片Slice。CVS、AU、PU的关系如下。

Slice: 在H266中一图图像可以被分割成一片或多片Slice,目的是压缩数据的高效存储、传输,每个Slice对应一个单独的NAL单元。可以分成三类:

类型 解释
I Slice 该Slice内所有CU都使用帧内预测
P Slice 在I Slice的基础上,该Slice内CU可以使用帧内预测、帧间预测,只使用图像参考列表list0
B Slice 在P Slice的基础上,B Slice可以使用图像参考列表list0和list1

Tile: 一幅图像可以划分若干个Tile,即从水平方向和垂直方向将一幅分割成若个矩形区域,一个矩形区域就是一个Tile,每个Tile包含整数个CTU,可以独立解码。划分Tile的主要目的是在增强并行处理能力的同时又不引入新的错误扩散。如下图的Tile划分。

CTU: H266使用树形编码单元CTU作为编码的基本单位,一幅图像被分成一个CTU序列,对于三通道图像,CTU由一个亮度CTB和两个对应的色度CTB构成。亮度最大允许尺寸128x128,色度块的最大尺寸64x64。
CU: 每个按照二叉树、三叉树、四叉树递归划分为不同尺寸的矩形编码单元CU。不同于H265,有CU\PU\TU的划分,H266是预测、变换、编码均以CU为基本单位。Slice、CTU、CU的关系如下:

在H266中,CU可以是正方形或矩形,一个CTU可能只包含一个CU,也可能被划分多个CU。如下图利用了多类型树将一个CTU递归划分为多个CU的例子。

参数集

非编码数据的参数集作为non-VLCU进行传输,这为传递关键数据提供了高鲁棒机制。

VPS: 视频参数集,VPS主要用于承载视频分级信息,表达PU间的依赖关系,支持可分级视频编码或多视点视频编码。

信息
每个PU的子层标识,子层间的相互依赖关系
标识输出层集合
会话所需的有关操作点的关键信息,如档次、级别

SPS: 序列参数集,SPS包含CVS的共用编码参数,一旦被CVS引用,该CVS中所有编码图像都是用该参数集的编码参数,SPS通过被PPS引用而作用与编码图像,一个CVS中所有被使用的PPS必须引用同一个SPS。

信息
编码格式的信息
编码参数信息
与参考图像相关的信息
档次、层和级相关参数
时域分级信息
可视化可用信息VUI
其他信息

PPS: 图像参数集,每幅图像包含一个或多个 Slice,在 H266中除了PPS,还使用了PH、APS来表示图像的共同编码参数,可被图像内所有Slice使用。PPS中存在一些与SPS中相同的参数,PPS会覆盖SPS中的取值。主要包含:

信息
编码工具的可用性标志
量化过程相关语法元素
Tile相关语法元素
去方块滤波相关语法元素
Slice头中的控制信息
编码一幅图像时可以共用的其他信息

PH: 图像头,作用与PPS相似,PH承载频繁变换的编码参数信息,如IRAP /GDR图像标识、Slice类型允许、图像序列、去方块滤波、SAO参数等。
APS: 自适应参数集,主要包含的信息具有大量数据,如传递自适应环路滤波参数ALF、参数映射与色度缩放参数LMCS、量化矩阵参数。
DCI: 解码能力信息。
SEI: 附加增强信息。

档次、层、级别

Profile: 档次主要规定了编码器可采用哪些编码工具或算法。H266/VVC标准规定了6种档次。

档次 解释
Main10 10bit、4:2:0或单色采样格式
Main4:4:4 10 10bit,4:4:4、4:2:2、4:2:0或单色采样格式
Main 10 Still Picture 和Main 4:4:4 10 Still Picture 与对应的Main10档次共享同一个档次ID,但比特流限制为只能包含一副编码图像
Multilayer Main 10 和Multilayer Main 10 4:4:4 支持多层编码

Tier: H266/VVC规定了2个层Tier,两个层分别是Main Tier(general_tier_flag=0)、High Tier(general_tier_flag=1)。
Level:H266/VVC规定了13个级别,支持从SQCIF 到8K多种分辨率的图像。图像的宽和高受到该级别定义参数MaxLumaPs的限制,还约束了水平方向和垂直方向Tile的最大数量,以及每秒Tile的最大数量。

参考

JVET提案系统: http://phenix.int-evry.fr/jvet/
JVET输出文档: https://www.itu.int/wftp3/av-arch/jvet-site/
JEM代码: https://jvet.hhi.fraunhofer.de/svn/svn_HMJEMSoftware/tags/
VTM代码: https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM
书籍: 新一代通用视频编码H266/VVC:原理、标准与实现[万帅 霍俊彦 马彦卓 杨付正/著]

相关推荐
安步当歌7 小时前
【WebRTC】视频编码链路中各个类的简单分析——VideoStreamEncoder
音视频·webrtc·视频编解码·video-codec
嵌入式小章7 小时前
基于STM32的实时时钟(RTC)教学
stm32·嵌入式硬件·实时音视频
安步当歌21 小时前
【WebRTC】视频采集模块中各个类的简单分析
音视频·webrtc·视频编解码·video-codec
DogDaoDao3 天前
libaom 源码分析:帧内方向预测模式
音视频·视频编解码·av1·libaom·帧内预测·方向预测·预测编码
安步当歌3 天前
【论文#码率控制】Rate Control for H.264 Video With Enhanced Rate and Distortion Models
音视频·视频编解码·h.264
wenchm4 天前
细说STM32单片机USART中断收发RTC实时时间并改善其鲁棒性的方法
stm32·单片机·实时音视频
郁大锤6 天前
linux alsa-lib snd_pcm_open函数源码分析(一)
linux·驱动开发·嵌入式硬件·音频·pcm·视频编解码
Starry-sky(jing)6 天前
边缘计算【智能+安全检测】系列教程--agx orin解决RTC时间问题
linux·人工智能·目标检测·边缘计算·实时音视频
weichushun7 天前
STM32 RTC时间无法设置和读取
stm32·嵌入式硬件·实时音视频