在2020年7月,H.266/VVC的标准规范正式面世。据统计,VVC的编码压缩率比HEVC提升一倍,支持RPR参考帧重采样、SCC屏幕内容编码等新技术。这意味着在5G时代,VVC视频编码让4K、8K超高清视频成为可能。
H.266/VVC算法复杂度比较高,对设备端的处理性能要求非常高。我们先来对比AVC、HEVC、VVC的一些差异:
H.264/AVC | H.265/HEVC | H.266/VVC |
1、变换尺寸4x4到16x16 2、参数集:SPS/PPS 3、帧内预测模式:9种 4、环路滤波:deblock 5、像素插值:最大1/4精度 |
1、变换尺寸4x4到64x64 2、参数集:SPS/PPS/VPS 3、帧内预测模式:35种 4、环路滤波:deblock、SAO
扫描二维码关注公众号,回复:
15635455 查看本文章
5、像素插值:最大1/8精度 |
1、变换尺寸4x4到128x128 2、参数集:SPS/PPS/VPS 3、帧内预测模式:65种 4、环路滤波:deblock、SAO、ALF、LMCS 5、像素插值:最大1/16精度 |
接下来让我们一起探究VVC的视频编码原理。
1、编码树单元
VVC的亮度块允许最大尺寸为128x128,色度块允许最大尺寸为64x64。利用二叉树、三叉树、四叉树将CTU进行划分。
2、HDR高动态范围
VVC支持HDR高动态范围的视频,ITU-R BT.2100标准规范两种光电转换曲线: PQ(Perceptual Quantization)和HLG(Hybrid Log Gamma)。VVC新增的亮度映射与色度缩放技术(Luma Mapping With Chroma Scaling)支持块级QP调整的算法,以适应HDR视频更大的动态范围和更宽的色彩空间。
3、环路滤波
VVC的环路滤波包括deblock去方块滤波、SAO样点自适应补偿、ALF自适应环路滤波、LMCS亮度映射与色度缩放。其中,deblock用于减少方块效应;SAO用于消除振铃效应;ALF用于减小编码误差,基于维纳滤波,通过原始图像信息和重建图像信息,建立维纳-霍夫方程求解具有最小均方差的滤波器系数;LMCS通过对动态范围信息重新分配码字来提高压缩效率。
4、360全景视频
全景视频是具有360度视角的球形视频,通常有多个摄像机同时对一个场景进行多角度拍摄,然后利用图像拼接算法将不同角度的视频进行拼接。VVC新增支持全景视频,而全景视频转换为平面视频的投影方式有:经纬图等角投影ERP(Equirectangular Projection)、立方体投影CMP(Cube Map Projection)、八面体投影OHP(Octahedron Projection)、截断金字塔投影SSP(Segmented Sphere Projection)。
5、SCC屏幕内容编码
SCC(Screen Content Coding),称为屏幕内容编码,包括:帧内块复制、变换跳过模式的残差编码、块差分脉冲编码调制、调色板模式、自适应色度变换。
6、RPR参考帧重采样
RPR(Reference Picture Resample),称为参考帧重采样。自适应视频流的分辨率变化,多层编码提供时域、空域可分级。
7、联合帧内帧间预测
CIIP(Combined Inter and Intra Prediction),称为联合帧内帧间预测。利用帧内预测值和帧间预测值的加权平均值得到当前CU预测值。相关限制:帧内预测值只采用Planar模式得到,帧间预测值只采用Merge模式得到。
8、高频调零
对于尺寸为MxN的变换块,如果M或N等于最大允许尺寸,则将将变换后的部分高频系数置为0,只保留低频系数。
9、双向光流
BDOF(Bi-Directional Optical Flow),称为双向光流。以4x4子块为基本单元,对双向预测块进行像素级的光流补偿,利用前向和后向预测块计算得到亮度空间梯度、亮度时间梯度,采样光流方程计算得到每个像素点的亮度补偿值。
10、多参考行预测
MRLP(Multi Reference Line Prediction),称为多参考行预测,支持当前CU上侧三行、左侧三列,提高预测精度。
11、NALU头部
H.266/VVC的NALU头部与H.264、H.265不太相同,使用2字节表示,具体如下表所示:
字段 | 位数 | 描述 |
forbidden_zero_bit | 1 bit | 默认0 |
nuh_reserved_zero_bit | 1 bit | 默认0 |
nuh_layer_id | 6 bit | 码流层级id,0~55 |
nal_unit_type | 5 bit | nal类型,取值0~31 |
nuh_temporal_id_plus1 | 3 bit | 临时id |
其中,常见的nal_uint_type如下表所示(不完整列举):
数值 | 类型 |
0 | TRSIL |
1 | STSA |
2 | RADL |
3 | RASL |
4/5/6 | RSV预留 |
7 | IDR_W_RADL |
8 | IDR_N_LP |
9 | CRA |
10 | GDR |
11 | RSV_IRAP |
12 | OPI |
13 | DCI |
14 | VPS |
15 | SPS |
16 | PPS |
参考书本:《新一代通用视频编码H.266/VVC: 标准、原理与实现》