CSDN贴图很麻烦,自本节起,相关图表请参考原文,原文的下载链接见第一节。
III. 高阶句法
HEVC的高阶句法包含从H.264/MPEG-4 AVC的NAL继承下来的多种元素。NAL的作用是将表示图像内容的视频编码层(VCL,video coding layer)数据映射到不同的传输层上,包括RTP/IP、ISO MP4和 H.222.0/MPEG-2系统,并提供一个用于包丢失恢复的框架。至于NAL的常规概念诸如NAL单元、参数集、访问单元、字节流格式以及分组格式等等,请参考[9]–[11]。
NAL单元按其所包含的是编码后的图像数据还是其他关联数据,分为VCL和非VCL单元。在HEVC标准中,含有几种可以协助解码器进行初始化和随机访问的、用于确认图像种类的VCLNAL单元。表1列出HEVC标准的各NAL单元型号及其相关含义和类别。
下面几个小节描述高阶句法所支持的新性能。
A.随机访问和码流粘接(Bitstream Splicing)特性
HEVC的新型设计支持随机访问和码流粘接等独特性能。而在传统的H.264/MPEG-4 AVC中,码流必须总是以一个IDR访问单元开头。IDR访问单元中含有一帧独立编码图像——即可以独立被解码而无需先解出NAL单元码流中其他先前帧。IDR访问单元的出现,意味着码流中的后继各帧不会参考IDR之前的图像。IDR帧用在一种“封闭的GOP”(GOP,group of pictures,图像组)编码结构中。
一种新的“随机访问清扫(CRA,clean random access)帧”句法详细描述了位于随机访问点(RAP,random access point)的独立编码帧的用法,随机访问点是指解码器无需利用其他先前帧就可以开始成功解出图像的位置,这一机制提供了高效的时域编码顺序——“开放的GOP”。对随机访问的有效支持,是通道切换、查找操作和各种动态的流服务的关键。某些解码顺序位于CRA帧之后而显示顺序位于CRA之前的图像,可能会参考对解码器来说无效的帧进行帧间预测。解码器在CRA点进行解码时必须丢弃这类不可解的图像(译者注:clean应该就是指此丢弃动作)。出于这一目的,此类不可解图像被标记为“随机访问跳过前导(RASL,random access skipped leading)帧”。不同原始码流的粘接点位置可用“打断连接访问(BLA,broken link access)帧”标记。码流粘接操作很简单:将一码流的CRA帧的NAL单元类型值修改为BLA帧类型,并将该码流连接到另一码流的RAP帧位置即可。RAP帧可以是IDR、CRA或者BLA帧,且CRA和BLA帧都可能有RASL帧紧随其后(取决于BLA帧所使用的NAL单元类型的具体值)。解码器必须丢弃任何与BLA帧相关的RASL帧,因为经过粘接操作后,RASL帧的参考帧有可能已经不在当前码流中了。其他各类解码顺序位于RAP帧之后而输出顺序位于RAP之前的帧,称为“随机访问可解码前导(RADL,random access decodable leading)帧”,这些帧不能参考解码顺序在对应的RAP帧之前的图像。RASL和RADL帧统称为前导帧(LP,leadingpicture)。解码顺序和输出顺序均在RAP帧后的图像,称为“追随帧(trailing picture)”,这类帧在进行帧间预测时不能参考前导帧。
B. 对时域子层的支持
与H.264/MPEG-4 AVC的可伸缩视频编码(SVC,scalable video coding))扩展[12]中的时域可伸缩特性类似,HEVC在NAL单元的头部描述了一种时域标识符(temporal identifier),用于在分层的时域预测结构中指定层级。引入时域标识符的作用是:只要处理NAL单元头而无需分析码流的其他部分,就可以获得时域可伸缩性能。
特定条件下,在同一视频码流的解码过程中可以调整已解码的时域子层的数目。码流中的哪个位置可进行子层切换并开始解码某些更高的时域层,可以通过“时域子层访问(TSA,temporal sublayer access)帧”和“逐步时域子层访问(STSA,stepwise TSA)帧”进行指示。在TSA帧处,解码操作可以从一个较低的时域子层切换到任一较高时域子层,而在STSA帧处,解码操作仅仅可以从一个较低的时域子层切换到一个特定的较高时域子层(但不可超过该高层,除非更高的子层上也包含有STSA或TSA帧)。
C. 补充参数集
VPS(视频参数集)已通过元数据的方式加入到码流中,用于描述已编码视频序列的全部特性,包括各时域子层间的相互依赖关系。设计补充参数集的主要目的是保证标准在系统子层信息的交换方面可以兼容地扩展,比如,将来扩展的可伸缩或多视角码流的基本层可能需要对一个旧的解码器可解,此时旧解码器可以通过VPS顺利解出基本层,而直接忽略掉只包含与新解码器有关的信息的补充参数集。
D. 参考帧集与参考帧清单
为管理多个参考帧,“已解码帧缓冲区(DPB,decoded picture buffer)”中必须保存一个由特定的已解码帧组成的集合,用于码流中余下各帧的解码。为辨识这些已解码帧,每个片头(slice header)都必须传输一份“帧顺序计数(POC,picture ordercount)”清单。这个由既存参考帧构成的集合,称为“参考帧集”(RPS,referencepicture set)。图2展示了POC值、解码顺序、以及一个时域预测结构中的各个RPS。
和H.264/MPEG-4 AVC一样,DPB中最多可构建2个参考清单,分别称为参考帧清单0(list 0)和清单1(list 1)。这些清单中的某一帧图像,用一个“参考帧索引(reference picture index)”进行标识。单向预测时只需从二清单中选取一帧图像。双向预测则需要从二清单各选一帧图像。当清单中只有一帧图像时,该参考帧索引值默认为0且此0值无需在码流中传输。
为帧间预测设计的辨识RPS和构建参考帧清单的高阶句法,在应对数据丢失方面比先前的H.264/MPEG-4AVC设计得更为健壮,同时也更经得起随机访问和特技模式(如:快进、平缓倒带、定位以及自适应码流切换)等操作的考验。这些进步的关键是句法更为清晰明确,不依赖于对解码器在逐帧解码过程中积累的内部状态的推导。此外,这些方面的相关句法的设计也确实比H.264/MPEG-4 AVC简单。