showeeks / hm

Other
0 stars 0 forks source link

参数集 #7

Open showeeks opened 3 years ago

showeeks commented 3 years ago

image

HEVC的参数集基本上类似于H.264/AVC中的参数集,并且共享相同的基本设计目标——即比特率效率、错误恢复能力和提供系统层接口。HEVC有一个参数集层次结构,包括序列参数集(SPS)和图像参数集(PPS),它们与AVC中的对应参数集相似。此外,HEVC引入了一种新型的参数集,称为视频参数集(VPS)。

每个切片引用一个活动的PPS、SPS和VPS来访问用于解码切片的信息。PPS包含适用于图片中所有切片的信息,因此图片中的所有切片必须引用相同的PPS。不同图片中的切片也允许引用同一个PPS。类似地,SPS包含适用于同一编码视频序列中所有图像的信息。VPS包含适用于编码视频序列中所有层的信息,并打算用于即将推出的HEVC分层扩展,这将实现可伸缩和多视图编码。虽然不同图片的PPS可能不同,但编码视频序列中的许多或所有图片引用相同的PPS是很常见的。重用参数集是比特率高效的,因为它避免了多次发送共享信息的必要性。它还具有防丢失功能,因为它允许参数集内容由更可靠的外部通信链路承载,或者在比特流中频繁重复,以确保不会丢失。这种在不同图片中重用图片参数集内容以及在不同CVS中重用SPSs和VPSs内容的能力,是“参数集”概念与AVC之前建立的旧标准中使用的“图片头”和“序列头”语法的主要区别。

为了识别给定切片在参数集类型层次结构的每个级别的活动参数集,每个切片头包含引用特定PPS的PPS标识符。PPS中有一个引用特定SPS的标识符。反过来,SPS中有一个引用特定VPS的标识符。图2.11说明了这个引用层次结构。

VPS

VPS是在HEVC定义的一种新型参数集,适用于比特流的所有层。一个层可以包含多个时间子层,所有版本1的比特流都被限制在一个层中。为可伸缩性和多视图开发的未来分层扩展将支持多个层,具有向后兼容的版本1基础层。

AVC没有包括类似于VPS的参数集,这导致了AVC的可伸缩视频编码(SVC)和多视图视频编码(MVC)扩展的复杂性和开销。SVC中的可伸缩性信息SEI消息和MVC中的查看可伸缩性信息SEI消息包含了VPS中包含的一些相同类型的信息。

VPS中包含的一些信息在SPS中也是重复的。需要将VPS包含在符合HEVC版本1的比特流中,或者通过外部方式提供,但是版本1解码器可以安全地丢弃包含VPS的nal单元。在VPS和SPS中复制一些信息需要一些(非常小程度的)比特率低效率,但是使得VPS能够包含与所有层及其时间子层相关的信息,这对于系统接口可能是有益的,而不需要版本1解码器处理VPS来访问该信息。

与时间可伸缩性相关的信息包含在虚拟专用网和SPS中。指示比特流中时间子层的最大数量。还有一个时间嵌套标志,它指示时间子层向上切换是否总是可以执行,例如时间标识大于0的所有图像是否都具有TSA图像功能,如第节所述。2.2.2.3 .可以为每个时间层发送解码图像缓冲器大小和图像排序参数,这些参数指示对解码图像缓冲器大小的限制,以及对图像解码和输出顺序的允许变化的限制,如第节所述。2.4.1.VPS包括最大层数的指示,对于版本1,最大层数被限制为一层。对于分层扩展,如可伸缩性和多视图扩展,多层之间的关系将在VPS扩展中定义。

如第节所述,虚拟参考解码器还可以包含用于假设参考解码器的操作点的层设置和定时信息。2.6.

SPS包含适用于整个编码视频序列的参数,并且在编码视频序列中不会因画面而异。同一CVS中的所有图片必须使用相同的SPS。SPS包含一个SPS标识符,以及一个标识相关VPS的索引。其余SPS参数属于以下类别。一些参数提供了编码序列的关键描述,这对系统接口很有用。其他参数描述编码工具的使用,或者提供编码工具参数,这可以提高比特率效率。此外,SPS可以选择性地包含视频可用性信息(VUI)数据,该数据提供不直接影响解码过程的信息,如第节所述。2.5.

描述编码序列特征的关键参数包含在SPS中。配置文件、层和级别指示指定一致性点,类似于AVC中的配置文件和级别定义。简档定义了一组编码工具,级别对最大采样率、图像大小和DPB的能力等施加了能力限制。HEVC引入了等级指示,它与等级相结合,施加了最大比特率限制。亮度样本中的编码图像高度和宽度以及一致性窗口裁剪参数都包含在SPS中,以指示编码图像的输出区域。还会指示亮度和色度位深度,它们的允许值受配置文件的约束。SPS还包含一些来自VPS的与时间可伸缩性相关的重复信息,如第节所述。2.3.1.

SPS还包含启用或禁用编码工具或设置编码工具限制的参数。在某些情况下,SPS中的编码工具启用标志允许编码切片避免包含与未使用的编码工具相关的语法元素。带有使能标志的工具的例子是非对称运动分割(AMP),如第二章所述。3、样本自适应偏移(SAO),如第3章所述。7和PCM编码,如第7章所述。6.对编码树块和变换单元大小的限制也被发信号通知。

SPS还可以可选地包括编码工具参数,如果使用每画面变化,也可以在较低层发送这些参数。其中包括缩放列表数据,它提供了量化矩阵,如第二章所述。6,以及参考图片集(RPS)数据,如第节所述。2.4.2.

showeeks commented 3 years ago

切片段头包含引用PPS的索引。切片段头部包含识别切片段的数据,包括图像标志中的第一切片段和切片段地址。当使用从属切片时,一个切片可以被分成多个切片段。某些参数仅包含在切片的第一个切片段中,包括切片类型(I、P或B)、图片输出标志以及长期和短期RPS信息(在第节中有更详细的描述)。2.4.2).

如果在SPS或PPS中启用了某些编码工具参数,则这些工具参数会出现在切片片段头中,包括分别为亮度和色度启用SAO、跨切片启用去块滤波器操作以及初始切片量化参数(QP)值。去块滤波器参数可以存在于切片段头部或PPS中。如果使用切片或波前,则在切片片段头中提供入口点。

当在PPS中指示时,可选的额外的片段报头比特可以被包括在片段报头的开始。它们的使用是为了将来的可扩展性,允许以系统实体容易访问的方式将参数与向后兼容的基础层相关联。

切片段头包含引用PPS的索引。切片段头部包含识别切片段的数据,包括图像标志中的第一切片段和切片段地址。当使用从属切片时,一个切片可以被分成多个切片段。某些参数仅包含在切片的第一个切片段中,包括切片类型(I、P或B)、图片输出标志以及长期和短期RPS信息(在第节中有更详细的描述)。2.4.2).

如果在SPS或PPS中启用了某些编码工具参数,则这些工具参数会出现在切片片段头中,包括分别为亮度和色度启用SAO、跨切片启用去块滤波器操作以及初始切片量化参数(QP)值。去块滤波器参数可以存在于切片段头部或PPS中。如果使用切片或波前,则在切片片段头中提供入口点。

当在PPS中指示时,可选的额外的片段报头比特可以被包括在片段报头的开始。它们的使用是为了将来的可扩展性,允许以系统实体容易访问的方式将参数与向后兼容的基础层相关联。

视频编解码器的几乎所有应用都涉及某种类型的系统接口,用于存储和/或传输,并提供定时信息以及视频与其他媒体类型(例如音频)的对齐。因为HEVC高级语法设计与自动车辆控制有很多共性,所以用于自动车辆控制运输的系统和运输标准可以更新,以承载HEVC [8]。HEVC和AVC的设计都将网络友好性作为关键设计目标。与系统接口相关的HEVC设计的关键要素是NAL单元设计、参数集和SEI信息。感兴趣的主要系统标准是实时传输协议[11]、MPEG-2系统[3,4]和国际标准化组织基本媒体文件格式[5]。许多其他系统和应用规范都建立在这三个标准之上。例如,几个文件格式规范和HTTP上的动态自适应流(DASH) [6]基于ISOBMFF,大多数广播标准使用MPEG-2系统,大多数IP视频会议应用使用RTP。

showeeks commented 3 years ago

MPEG-2传输流使用固定长度的188字节数据包,不直接与可变长度的HEVC NAL单位对齐。MPEG-2系统中NAL单元的起始可以使用唯一的起始码和可选的字节流格式来识别。在NAL装置内避免起始代码仿真一直是AVC和HEVC的NAL装置设计的一部分。

在撰写本文时,HEVC [11]提议的实时协议(RTP)有效载荷格式在互联网工程任务组(IETF)中处于互联网草案状态。实时传输协议包大小可变,支持可变长度NAL单元和实时传输协议包之间的对齐。聚合数据包允许将多个NAL单元放在单个实时传输协议数据包中。例如,参数集和/或SEI消息可以被放置在与编码切片段相同的分组中。分段单元分组允许编码的切片段被分成两个或更多个实时传输协议分组。然而,碎片单元的使用会对错误恢复能力产生负面影响,因为丢失碎片片段中的一个数据包会导致该片段中的其他数据包不可解码。切片被设计为可单独解码,切片之间没有解析依赖关系。然而,切片的解析确实依赖于参数集。

在HEVC,像在AVC中一样,参数集可以在带内或带外发送,并且可以重复发送以提高错误恢复能力。许多系统规范提供参数集的特殊处理,以受益于序列和比特流级别信息的提前可用性。例如,当使用实时传输协议时,可以在会话描述协议(SDP)中携带参数集,该协议用于描述用于会话通告和能力交换/协商的流媒体参数。在ISOBMFF中,参数集可以携带在轨道的样本条目中。

位于编码器和解码器之间的网络中的媒体感知网络元件(MANE)可以基于对NAL单元报头的检查,对视频传输的分组执行适配。如第节所述。2.2,所有NAL单位都包含NAL单位报头,后跟NAL单位有效载荷数据。NAL单元报头是固定长度的,并且包含时间标识符值和用于HEVC扩展的层标识符的保留位。MANE可以容易地访问每个分组的时间标识,并丢弃那些时间标识值超过目标值的分组,以较低的帧速率创建兼容的子比特流。对于像MPEG-2这样没有将NAL单元与分组对齐的系统,每个时间子层可以被放置在单独的分组化基本流中,以便能够基于分组化基本流提取子比特流。

NAL单元标题还包含一个NAL单元类型,它描述了编码的图片类型。如第节所述。2.2.2.1,某些NAL单位类型值对应于随机访问点。随机接入点的识别对于ISOBMFF来说尤为重要。在ISOBMFF中,可以通过多种方式识别比特流中随机访问点的位置,例如通过同步样本表和/或一些随机访问点相关的样本组。

showeeks commented 3 years ago

HEVC的每张图片都有一个图片顺序计数(POC)值,表示为PicOrderCntVal。它有三个主要用途:唯一地识别图片,指示输出相对于同一CVS中其他图片的位置,以及在低级VCL解码过程中执行运动矢量缩放。同一CVS中的所有图片必须具有唯一的POC值。来自不同简历的图片可能共享相同的概念验证值,但是图片仍然可以被唯一地识别,因为不可能将来自一个简历的图片与另一个简历的任何图片混合。在CVS中允许POC值的间隙——即,在输出顺序上连续的两个图像之间的POC值差可以相差不止一个(事实上,连续图像的POC值可能相差的量可以任意变化)。

图片的概念验证值由切片头中的 slice_pic_order_cnt_lsb 码字来表示。允许的POC值的范围是从$-2^{31}$到$2^{31}-1$,因此为了节省片报头中的比特,仅发送POC值(POC LSB)的最低有效比特。用于概念验证最低有效位的位数可以在4到16之间,并在SPS中发出信号。由于只有概念验证最低有效位在切片头中发出信号,所以当前图像的最高有效概念验证值位(概念验证最高有效位)是从以前的图像中导出的,称为前一图像。为了即使图片被移除,POC推导也以相同的方式工作,prevTid0Pic 被设置为时间层0的最近的先前图片,其不是RASL图片、RADL图片或子层非参考图片。解码器通过将当前图片的概念验证值与前一图片的概念验证值进行比较来导出概念验证值。

HEVC的解码图像缓冲器(DPB)是包含解码图像的缓冲器。除了当前图像之外的解码图像可以存储在DPB中,或者是因为它们需要参考,或者是因为它们还没有被输出,这是实现无序输出所必需的。注意,当前解码的图像也存储在DPB中。图2.12显示了两个引用结构的例子,它们都需要至少三张图片的DPB尺寸。当P 3被解码时,图2.12a中的图片P 1和P 2都需要存储在DPB中,因为它们都是在P 3之后输出的。因此,DPB需要能够同时存储P 1、P 2和P 3。在图2.12b中,每张图片使用两张参考图片,因此DPB需要足够大,以便在这里同时存储三张图片。图2.12b中的参考结构是所谓的低延迟B结构的一个例子,其中双向预测被广泛使用而没有任何无序输出。

解码器解码特定比特流所需分配的最小DPB尺寸由sps_max_dec_pic_buffering_minus1码字来通知,该码字可以针对序列参数集中的每个时间子层来发送。第一版HEVC允许的最大DPB尺寸是16,