H.265/HEVC编码结构

IDR(Instantaneous Decoding Refresh)–即时解码刷新

  • IDR 图像一定是 I 图像,但I图像不一定是 IDR 图像。
  • IDR 帧的作用是立刻刷新,使错误不致传播,从IDR帧开始,重新算一个新的序列开始编码。
  • IDR 会导致DPB(参考帧列表——这是关键所在)清空,而 I 不会。
  • 一个序列中可以有很多的 I 图像,I 图像之后的图象可以引用I图像之间的图像做运动参考。
  • 在 IDR 帧之后的所有帧都不能引用任何 IDR 帧之前的帧的内容。

GOP (Group of Pictures)

  • 每个 GOP包含帧数为视点数和 GOP 长度的乘积。
  • 封闭式GOP(Closed GOP):每个GOP都以IDR图像开始,每个GOP之间独立编解码。
  • 开放式GOP(Open GOP):第一个GOP以IDR图像开始,后面的GOP第一帧为non-IDR图像。

H.265/HEVC编码结构

一、码流结构:

  • 参数集是一个独立的数据单位,一个参数集并不对应某个特定的图像或CVS

  • 同一个VPS或SPS可以被多个CVS引用,同一个PPS可以被多个图像引用。

  • 对于一个SS,通过引用它所使用的PPS,该PPS又引用其对应的SPS,该SPS又引用它对应的VPS,最终得到SS的共用信息。

    H.265/HEVC编码结构

1、图像参数集(Picture Parameter Set,PPS

  • 一个CVS包含多幅图像,每幅图像可能包括一个或多个SS,每个SS头提供了其所引用的PPS标识号。
  • PPS包含一幅图像所用的公共参数,即一幅图像中所有SS引用同一个PPS
  • PPS中存在一些与SPS中相同的参数,PPS将会覆盖SPS中相同参数的的取值。
  • 在解码开始时,所有的PPS全部是非活动状态,而且在解码任意时刻最多只能有一个PPS处于**状态。
  • PPS的内容大致分为以下几个部分:
    1. 编码工具的可用性标志。
    2. 量化过程相关句法元素。
    3. Tile相关句法元素。
    4. 去方块滤波相关句法元素。
    5. 片头中的控制信息。
    6. 其他编码一幅图像时可以共用的信息。

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

  • SPS包含了一个CVS中所有编码图像的共享编码参数。
  • 一个CVS中所有被使用的PPS必须引用同一个SPS。
  • SPS为所有的SS提供了公共参数,如图像的格式、档次、级等。
  • SPS的内容包括以下几个部分:
    1. 图像格式的信息。包括采样格式、图像分辨率、量化深度等
    2. 编码参数信息。包括编码块、变换块的最小尺寸和最大尺寸等
    3. 与参考图像相关的信息。
    4. 档次、层和级相关参数。
    5. 时域分级信息。
    6. 可视化可用性信息。
    7. 其他信息

3、视频参数集(Video Parameter Set,VPS

  • VPS主要用于传输视频分级信息,描述时域各层之间的依赖关系。
  • 一个给定的视频序列,无论它每一层的SPS是否相同,都参考相同的VPS。
  • VPS包含的信息有:
    1. 多个子层和操作点共享的语法元素
    2. 会话所需的有关操作点的关键信息,如档次、级别
    3. 其他不属于SPS的操作点特性信息,如与多层或子层相关的虚拟参考解码器(HRD)参数

二、片段层

  • 一幅图像可以被分割为一个或多个片(Slice),每个片的压缩数据都是独立的,Slice头信息无法通过前一个Slice头信息推断得到。故Slice不能跨过它的边界进行帧内或帧间预测
  • 进行环路滤波时,允许滤波器跨越Slice的边界进行滤波。
  • Slice的解码过程可以不使用任何来自其他Slice的影响,有利于实现并行运算。
  • 使用Slice的主要目的是当数据丢失后能再次保证解码同步。
  • 根据编码类型不同,Slice可分为以下几个部分:
    1. I Slice:其中所有的CU的编码过程都使用帧内预测。
    2. P Slice:在I Slice的基础上,其中的CU还可以使用帧间预测,每个预测块(PB)使用至多一个运动补偿预测信息。只使用图像参考列表list0。
    3. B Slice:在P Slice的基础上,每个PB可以使用至多两个运动补偿预测信息。可以使用图像参考列表list0和list1。
  • 一个Slice可被进一步划分为若干SS,包括一个独立SS若干依赖SS,且以独立SS作为该Slice的开始
  • 一个SS包含整数个,这些CTU分布在同一个NAL单元中。SS可以作为一个分组来传送视频编码数据。
  • 预测过程不能跨越独立Slice的边界,但可以跨越依赖SS的边界,一个Slice内的SS之间可以相互参考。

H.265/HEVC编码结构

H.265/HEVC编码结构

  • HEVC编码的最高层为SS层,SS是视频编码数据的基本单位。
  • SS头中会存在一些与PPS中相同的参数,SS头中的这些参数值会将其覆盖。

三、Tile单元

  • 从水平和垂直方向将一幅图像分割成若干个矩形区域,一个矩形区域就是一个Tile

  • Slice和Tile划分目的都是为了进行独立解码,但划分方式不同,Tile为矩形,SLice为条带状

  • Slice由SS组成,SS由CTU组成,而TIle直接由CTU组成

  • 一个Tile包含的CTU个数和Slice包含的CTU个数互不影响

  • 每个Slice/SS和Tile至少要满足一下条件之一

    1. 一个Slice/SS中的所有CTU属于同一个Tile
    2. 一个Tile中的所有CTU属于同一个Slice

    H.265/HEVC编码结构

四、树形编码块

  • 一个CTU由同一位置处的一个亮度CTB、两个色度CTB和相应语法元素组成
  • 对于一个L×L大小的亮度CTB,L的取值可以是16、32或64
  • HEVC为图像划分定义了一套全新的语法单元:
    1. 编码单元CU:进行预测、变换、量化和熵编码等处理的基本单元
    2. 预测单元PU:进行帧内/帧间预测的基本单元
    3. 变换单元TU:进行变换、量化的基本单元

1、编码单元CU

  • 一个亮度CB和相应的色度CB及它们相关的句法元素组成一个编码单元CU

  • 一幅图像可以被划分为若干个不重叠的CTU,CTU内部采用四叉树划分为CU

    H.265/HEVC编码结构 

  • 编码单元是否继续被划分取决于分割标志位Split flag,值为0则不继续划分,为1则继续划分

    H.265/HEVC编码结构

2、预测单元PU

  • PU规定了编码单元所有的预测模式,一切与预测有关的信息都定义在预测单元部分,如:帧内预测的方向、帧间预测的分割方式、运动矢量预测,以及帧间预测参考图像索引号
  • 对于一个2N×2N的CU,帧内预测单元PU的可选模式有两种:2N×2N和N×N;
  • 帧间预测单元PU的可选模式有8种:2N×2N、2N×N、N×2N、N×N、2N×nU、2N×nD、nL×2N、nR×2N。
  • skip模式是帧间预测模式的一种,当运动信息只有运动参数机索引,编码残差信息不需要编码时,为2N×2N skip模式。

H.265/HEVC编码结构

3、变换单元TU

  • TU是独立完成变换和量化的基本单元,可支持大小为4×4~32×32的编码变换。
  • 在一个CU内,允许TU跨越多个PU,以四叉树的形式递归划分。
  • 是否可以进一步划分由SPS中的TU最大划分深度决定。
  • 大块的TU模式可以更好地集中能量,小块的TU模式能够保存更多的图像细节。

H.265/HEVC编码结构

五、档次、层和级别

在H.264/AVC就有档次(profile)和级别(level)的划分,H.265/HEVC在此基础上定义了一个新的概念:层(Tier)。档次、层和级别为多种不同应用提供了兼容性。

  • 档次主要规定编码器可采用哪些编码工具或算法
  • 级别是指根据解码端的负载和存储空间情况对关键参数加以限制
  • 有些Level定义了两个Tier:主层(Main Tier)和高层(High Tier),主层用于大多数应用,高层用于那些最苛刻的应用

1、档次

H.265/HEVC标准中提出了三种档次:Main、Main 10和Main Still Picture。

它们的限制条件如下:

①只支持4:2:0色度采样信号;

②使用了Tier则不能使用WPP(波前并行处理),每一个Tier的亮度分辨率至少要为256*64;

③Main和Main Still Picture档次支持八位像素深度,Main 10还支持10位像素深度,Main Still Picture不支持帧间预测。

2、层和级别

HEVC定义了两个层和13个级。两个层分别是Main Tier和High Tier。

符合某一Tier/Level的解码器能够解码当前及更低的所有码流。

 

TIPS

  • NAL指网络提取层,里面放一些与网络相关的信息
  • NAL单元根据是否装载视频编码数据分为VCLU和non-VCLU。非编码数据的参数集作为non-VCLU传输,一个SS的压缩数据生成一个VCLU进行传输。
  • CVS(Coded Video Sequence):一个GOP编码后所生成的压缩数据。
  • CPB:解码缓冲区