由于文献其他博主已经上传,各位可以去下载,本文用于(部分)翻译和学习
传送门:https://download.youkuaiyun.com/download/daunxx/7293175
HEVC标准的综述(Overview of the High Efficiency Video Coding (HEVC) Standard)
摘要:
HEVC的最终目的就是在保持和以前标准的同质量视频的条件下,将比特速率下降50%左右。
一、介绍
1.HEVC的发展过程
2.视频编码标准的发展过程
3.HEVC相对于AVC关注的两个关键点:
(1)提高视频分辨率(2)使用并行处理架构
4.HEVC中只有比特流结构和语法是标准化的
二、HEVC编码设计及特点突出
HEVC的设计可以完成多个目标:编码效率、便于传输的集成系统和数据的恢复以及使用并行处理架构的可实现性。
A.视频编码层
HEVC的视频编码层混合编码方式(帧内帧间预测/二维变换编码),图1展示了混合编码器的编码过程。
图1:HEVC编码器的编码过程
产生符合HEVC的比特流的编码算法通常是以下几步:
1.将每一幅图片划分为块状区域,并且精确的块划分信息传递至解码端;
2.视频序列的第一帧只进行帧内预测,即仅仅使用该帧内的数据进行预测,而与其他帧无关;
3.视频序列的其余帧中的大多数块一般会使用帧间预测模式,帧间预测的过程一般包括:指定参考帧的运动数据选择和用于每个块的样本预测的运动矢量的选择;
4.编码器和解码器通过使用运动矢量和模式决策数据的运动补偿来产生同样的信号,且运动矢量和模式决策数据作为附加信息传输;
5.无论是帧内预测还是帧间预测的残差信息(原始块和预测块之间的差值)都要进行线性空域变换,然后变换系数将进行缩放(scaled??)、量化、熵编码并且和预测信号一同进行传输;
6.编码器和解码器的处理环相同(如图1中的灰色方框),因此两者都将为后续数据生成相同的预测信息,因此可以通过反缩放和反变换得到残差信号的解码(??)的大约值来对量化的变换系数进行重建;
7.将残差信号于预测信号相加,将和信号输入至一个或者两个环路滤波器,滤除由块处理和量化引入的噪声部分;
8.最后一帧的图像表示(解码器的输出副本)存储在解码后的图像缓冲区中,用来对后续的图片进行预测
9.一般来说,图像的编解码过程的顺序和从信号源到达编解码器的顺序是不同的,值得注意的是对于解码器来说,它的解码顺序(比特流顺序)和输出顺序(显示顺序)是明显不同的。
HEVC编码的视频一般被认为是进行逐行扫描的,可能是由于源视频本来就是逐行扫描的格式,或者是由于编码前的去隔行效应造成的。由于隔行扫描不再用于图像显示,而且在分配(distribution??)中越来越不常见,因此HEVC的设计中没有明确的编码特性来支持隔行扫描的使用。但是,HEVC可以提供一个元数据语法使编码器能够指示:隔行扫描视频可以通过对它各个字段(field)进行编码(每个视频帧的奇数或者偶数行)来作为一个独立的图片进行传输或者直接对隔行扫描的帧进行编码作为HEVC编码的图片来进行传输。这种对隔行扫描视频进行编码的有效方式,使解码器不需要再增加一个特殊的解码过程。
下面介绍使用HEVC进行混合编码的各种特性:
1)编码树单元(CTU)和编码树块的结构(CTB)
以往的编码层的核心就是宏块,它包含一个16x16的亮度样本块,通常选择4:2:0进行采样,对应两个8x8的色度样本块。而在HEVC中使用的是编码树单元(CTU),编码器在选择CTU大小的时候要比传统的宏块模式灵活的多。CTU包括一个亮度CTB和对应的色度CTBs和语法元素。亮度CTB的大小可以为:16x16,32x32或者64x64(更大的尺寸能够得到更好的压缩效应)。并且HEVC可以使用树形结构或者四叉树结构将CTBs再次划分。
2)编码单元(CU)和编码块(CB)
CTU的四叉树语法明确了它的亮度和色度 CBs的大小和位置,四叉树的根与CTU有关。因此,亮度CB的size最大值就是亮度CTB的size。CTU分割为亮度和色度CBs的过程为联合信号控制,一般来说,一个亮度CB和两个色度CBs根据相关语法形成一个编码单元(CU)。一个CTB可能仅包含一个CU或者包含多个CUs,每个CU都可以分割为预测单元(PUs)和变换单元(TUs)树。
3)预测单元(PU)和预测块(PB)
在编码时使用帧间预测还是帧内预测模式,这一决定是在CU层做出的。PU结构划分的根就在CU层。根据预测类型的不同,亮度和色度CBs可以被进一步划分,并利用亮度和色度(PBs)进行预测,HEVC支持的PB大小为4x4~64x64。
4)变换单元(TU)和变换块(TB)
使用块变换对预测的残差进行编码。一个TU树结构的根也在CU层。亮度CB残差可能亮度TB相同,也可能被分为更小的亮度TBs,色度TBs的划分过程亦然。类似于离散余弦变换的整数基函数适用于大小为4x4,8x8,16x16,32x32的方形TB。对于亮度帧内预测残差的4x4变换,也可以使用从离散正弦变换衍生出的整数变换。
5)运动矢量信号
在HEVC中使用先进的运动矢量预测,包括基于相邻PBs和参考图片的数据进行多个最可能候选模式的推导。在运动矢量编码中可以使用图像融合模式,它可以从时域或空域相邻的PBs中对MVs进行继承。更多的是,相对于H.264/MPEG-4 AVC来说,HEVC明确了改进的skip模式和方向运动的特点。
6)运动补偿
对于MVs来说常常使用1/4采样点的精度,对于小数抽样位置的插值来说,一般使用7抽头或者8抽头的滤波器(与H.264/MPEG-4 AVC中,半采样点的6抽头滤波和四分之一采样点的线性插值相比较)。与H.264/MPEG-4 AVC相同的是,HEVC也使用多个参考图片。对于每个PB来说,可以传输一个或者两个运动矢量,分别产生单预测和双预测编码。在H.264/MPEG-4 AVC中,可以对预测信号进行缩放和偏移操作,这种方法称为加权预测。
7)帧内预测
相邻块的解码后的边界样本一般作为某个区域空间预测的参考数据,这个区域没有进行帧间预测。帧内预测支持33种方向模式(H.264/MPEG-4 AVC只有8种模式)、planar和DC预测模式。通过对已经解码的邻域PBs进行分析得到最可能的预测方式(比如:不同方向预测),将他们作为被选择的预测方式进行编码。
8)量化控制
和H.264/MPEG-4 AVC一样,HEVC也使用均匀重建量化(URQ),URQ对不同大小的变换块配备量化缩放矩阵
9)熵编码
和H.264/MPEG-4 AVC一样,CABAC被用于熵编码。但是为了提高吞吐量(尤其是对于并行处理结构)和压缩性能,并降低上下文的内存需求(??to reduce its context memory requirements),这种方法已经取得了一些改进。
10)内循环去块效应效应滤波器
和H.264/MPEG-4 AVC中使用的去块效应滤波器相似,该器件在帧间预测循环中被应用,但是,HEVC简化了它的决策和滤波进程,使它更加适应并行处理过程。
11)样本自适应偏移
在去块效应滤波器之后,帧间预测循环引入了一个非线性幅值映射。它的目的是通过查表更好地重构原始信号振幅,这个表由少量的额外的参数构成,并且这些参数可以通过在编码器端进行直方图分析来确定。
B、高层次语法结构
HEVC提高了在不同应用上操作和网络环境的灵活性,并且提高了数据损失的鲁棒性。然而,对于HEVC来说,H.264/MPEG-4 AVC中的高层次语法结构被大范围的保留下来,主要体现在以下几个方面:
1)参数集结构
参数集包含的信息可以共享,以便对视频的多个区域进行解码(Parameter sets contain information that can be shared for the decoding of several regions of the decoded video. ???)。这个参数及结构能为解码过程中的关键数据提供一个健全的传输机制。H.264/MPEG-4 AVC中序列和图像参数集这一概念被一种新的视频参数集(VPS)结构扩展。
2)NAL单元语法结构
每个语法结构都被放入一个称为网络抽象层(NAL)单元的逻辑数据包中。通过应用两个字节NAL单元头中的内容,可以很容易地识别相关有效负载数据的用途。
3)slices
slices是一种数据结构,在熵编码、信号预测和残差信号重构方面,可以独立于同一幅图像的其他slices进行解码。一个slice可以作为整幅图片或者是一幅图片的一个区域。slices的主要目的就是在出现误码之后实现再同步。在分组传输的条件下,一个slice的最大负荷比特数目是有严格的限制的。在将一个分组的大小控制在一定范围之内的条件下,一个slice中的CTU数目是可变的,目的是尽可能的减小分组的开销。
4)补充增强信息(SEI)和视频可用性信息(VUI)元数据
这个语法包括对不同类型的元数据(SEI和VUI)提供支持,这些数据能够提供的信息包括:视频图像的时间,视频信号中色彩空间的适当帧间预测的使用情况,三维立体框架包装信息,其他显示提示信息等等。
C、并行解码语法和修正slice结构
出于分组的目的,HEVC引入了四大特点来增加并行传输的能力和修正slice数据的结构。每个特点一般在特定的应用环境中使用,一般由编解码器的实现者来决定是否和如何使用这些特性。
1)tiles
将一幅图片划分为不同的矩形区域,这些矩形区域叫做tiles。使用tiles的目的不是为了提供差错恢复,而是为了提高并行传输能力。tiles是一张图片中相互独立的可解码区域,图片是使用一些共享头信息进行编码的。tiles还可以实现在空域对视频图像局部区域的随机访问。一幅图片的典型tile结构一般是将一幅图片分割为不同的矩形区域,每个tiles中的CTU的数量大致相同。tiles能够为粗的粒度级别(a more coarse level of granularity ??)(图片或子图)提供良好的并行机制,并且在过程中不涉及同步。
2)波阵面并行处理
当使用波阵面并行处理时,一个slice被分为若干行CTUs,第一行进行常规处理,当第一行处理完两个CTUs之后,第二行开始处理;当第二行处理完两个CTUs之后,第三行开始处理,以此类推。每一行熵编码器的上下文模型都是从前一行的熵编码器推导出来的,具有两个CTUs的处理延迟。WPP在一个相当细的粒度级别上提供了一个有效的并行处理方式,一般比tiles的压缩性能更好而不引入由tiles产生的视觉干扰。
3)相关slices片段
叫做相关slice片段的结构允许数据和一个特定波阵面的接入点或者一个独立NAL单元携带的tile相关联,因此相对于在一个slice中全部进行编码,数据在不同分组的延迟较小。对于波阵面接入点的一个相关slice片段只能在其他slice片段的解码已经部分完成的条件下才能进行解码。相关slice片段一般用于低延迟编码中,如果使用其他的并行工具可能会损害整体的压缩性能。
四、HEVC视频编码工具
HEVC继承了混合编码方式,这种源编码算法是一种混合编码,它包括
1、为了进一步研究时间统计特性的帧间预测
2、为了进一步研究空间统计特性的帧内预测
3、为了进一步研究空间统计特性的残差信号预测
在HEVC中没有单独编码的设计,所以相对于以前的编码标准,HEVC在压缩性能方面有了很大的改进。正是因为如此,若干个小的改进可以大幅度提高性能。
A、图像的抽样表示
对于彩色视频信号的表示,HEVC通常使用4:2:0抽样的三色YCbCr色彩空间。它将一种颜色分为三个分量Y、Cb、Cr。Y分量也叫作luma,它代表了亮度分量,Cb和Cr分别代表了从灰度变为蓝色和红色的色彩偏离程度。由于人的视觉系统对亮度分量更加敏感,所以使用4:2:0采样结构,即色度分量为亮度分量的四分之一(水平和垂直方向各为一半)。每个采样点的每个分量一般有8比特或10比特的精度,8比特更加常见。在本篇文章中我们采用:对于编码器输入信号和解码器输出信号来说,采用YUV分量,以4:2:0的采样结构采样,每个样本8比特。视频图像的采样一般按照图像的WxH的大小顺序采样,根据亮度采样(luma)W为图像的宽,H为图像的高。每个色度采样序列,根据4:2:0采样结构,大小为W/2xH/2。对于给定的YUV信号,HEVC将做以下的处理:
B、将图片分割为编码树单元(CTU)
一张图片可以分割为多个CTU,每个CTU包括多个亮度CTB和色度CTB。一个亮度CTB包括LxL样本大小的亮度分量矩形区域和对应的两个L/2xL/2大小的色度分量矩形区域。L可以是16、32或者64,具体的值在SPS中使用编码语法结构进行明确。相对于以前标准的16x16宏块处理来说。HEVC支持可变size的CTB大小,它的size可以根据编码需要和计算要求进行自主选择。size较大的CTB对高分辨率的视频进行编码时益处尤为突出。一个亮度CTB和两个色度CTB和对应的语法结构组成了一个CTU。CTU也是HEVC解码过程中进行操作的基本单元。
C、将CTB分割为CBs
亮度和色度CTB可以直接当做CBs来使用,也可以进一步分割为多个更小的CBs。分割的依据就是树形结构分割。在处理亮度和色度分量时,HEVC一般采用树形分割,直到当色度分量的size达到最小值时才会出现例外。
CTU包括一个四叉树语法结构,它能够根据图片信号的特点将CTB划分为合适大小的CB。四叉树分割结构一般可以进行迭代使用,直到达到亮度CB所允许的最小值,这个最小值一般为8x8或者更大,并在SPS中进行传输。
图片的边界允许以亮度CB大小的最小值来进行定义,因此在图片的右侧和底侧区域,一些CTU可能会覆盖超出图片大小的区域,这种情况在解码器端会检查到,因此四叉树分割语法要进行微调,减小CB的size使完整的CB能够正好适应整幅图片。
D、PUs和PBs
CU的预测模式一般根据使用帧内预测还是帧间预测进行标记为帧内或帧间。当预测模式为帧内预测时,除了比特流中允许的最小CB大小之外,所有帧内预测所构建的PB块的大小和CB块大小一致。对于后一种情况,我们可以根据一个标志位来决定是否要将CB划分为4个PB,这4个PB分别有各自的帧内预测模式。采用这种划分模式的原因是,能够使小至4x4块的帧内预测模式的选择更加清晰明了。当亮度帧内预测使用4x4大小的块时,色度帧内预测同样使用4x4大小的块(和4x4的亮度块覆盖相同的区域)。帧内预测实际操作的区域大小和帧内预测模式所建立的PB大小不同,实际大小取决于残差的编码分区,如下文所示。
当预测模式被标记为帧间预测时,我们要明确是否要将亮度和色度CBs划分为1个、2个或者4个PBs。只有当CB的大小为最小CB的size时,CB才可以被划分为4个PBs,并使用一种均等的划分类型。当CB划分为四个PB时,每个PB包括该CB的四等分之一,当CB划分为两个PB时,则会出现6种划分结构。对于帧间预测的6种划分结构如图三所示。
图3:CB划分结构(帧内预测只能使用MxM或者M/2xM/2划分)
上面的四幅图表示对称划分,下面的四幅图表示非对称运动划分(AMP),仅仅适用于M为16或以上的亮度分量。每个帧间预测的PB被分配一个或两个运动矢量和参考图片索引。为了优化最坏情况下的内存带宽,亮度大小为4x4的PBs不能用来进行帧间预测,亮度大小为4x8或者8x4的PBs只能进行单向编码。帧间编码的具体过程如下文所所示。
亮度和色度PBs,包括预测语法形成了PU。
E、利用树形结构划分为变换块和变换单元
对于残差编码来说,一个CB可以递归地被划分为若干个变换块(TBs)。分割是通过残差四叉树进行的。如图4所示,只有方形的CBs或TBs能够被递归地划分为四个小块。
图4:一个CTB划分成CBs和TBs的过程(实线表示CB的边界,虚线表示TB的边界)
(a)CTB的划分过程(b)相对应的四叉树结构
对于一个给定size的MxM的块,可以通过标志信号来判断是否要划分为四个M/2xM/2大小的块。如果可以进一步划分,在SPS中传输一个残差四叉树最大深度信号,对于每一个四叉树子块都要分配一个信号来决定是否可以进一步划分。残差四叉树的叶子节点为变换块TBs,这些TBs通过变换编码做进一步的处理。编码可以用亮度TB size的最大值和最小值。当CB的size大于最大TB的size时,进行分割;当亮度TB的size小于标记的最小值(indicated minimum??)时,停止分割。色度TB的大小在水平和垂直方向上均为亮度TB的一半,除非当亮度TB的size为4x4时,这时候对该覆盖4x4亮度TB的区域,使用一个4x4的色度TB。在帧内预测的CUs中,将最靠近TBs的解码样本(CB内或者CB外)用作帧内预的参考数据。
相对于以往的标准,HEVC对于帧间预测的CUs,允许一个TB跨度多个PBs。将四叉树结构TB分区的编码效率的优点最大化。
F、slices和tiles
slice是按照光栅扫描顺序进行处理的CTUs的序列。正如图5所示,一张图片可以分割为一个或者若干个slice,因此一张图片可以是一个或者多个slice的集合。
图5:(a)图片分割为slices(b)图片分割为tiles(c)并行波阵面处理结构
slices都是独立的,对于给定的活跃序列的可用性和图像参数集,它们的语法元素可以从比特流和图片在该区域的样本值进行分析。通过分析可知,slice在不使用同一幅图片的其他slice的条件下,可以进行正确的解码(除了slice边缘部分,因为会受到内循环滤波的影响)。这就意味着图片内的预测(如帧内空域信号预测和运动矢量预测)不能跨slice的边界进行。然而,一些来自其他slices的信息可能需要在跨slice边界应用内循环滤波。每个slice都可以用以下编码方式进行编码:
1)I slice:一个slice中的所有CUs都用帧内预测模式进行编码。
2)P slice:除了I slice的方式进行编码外,P slice的一些CUs使用帧间预测进行编码,且每个PB最多只有一个运动补偿信号(单向预测),P slice仅使用参考图片列表0.
3)B slice:除了在P slice中的编码方式,B slice中的一些CUs使用帧间预测进行编码,且每个PB最多有两个运动补偿信号,B slice使用参考图片列表0和1.
slices的一个目的就是完成数据丢失后的再同步。进一步说,例如对于分组传输,slices经常被限制使用最大比特数。因此,在一个slice中,CTUs的数目经常变化,这取决于视频场景的内容。除了slices,HEVC还定义了tiles,tiles是图片中可独立解码的矩形区域。定义tiles的目的是使用并行处理结构。由于包含在相同的slice中,多个tiles可能使用一样的头信息,相同地,一个tile可能包括多个slices。一个tile包括顺序排列的一组矩形CTUs(一般,但不是必须,每个tile包含的CTU的数目是相同的)如图5的(b)所示。
为了促进数据分组的粒度(granularity???),相关联的slices被另外定义。根据波阵面并行处理过程,一个slice被分成若干个由多个CTU组成的行。每一行的译码工作可以在前一行做出一些所需要的熵编码器的预测和自适应决策后立即开始。通过在编码器或译码器(或者两者都)使用多线程处理,从而支持CTUs行的并行处理, 如图5(c)所示 。为了简化设计,波阵面并行处理一般不会和tiles同时使用(即使这些特性原则上可以共同使用)。
G、帧内预测
根据TB大小进行帧内预测,利用之前从空域相邻TBs中解码的边界样本形成预测信号。 对于4x4~32x32的方形TBs,定义了33种不同方向的方向预测。可能的方向预测如图6所示。
图6:帧内预测的模式和对应方向图
或者,也可以使用planar预测(假定振幅面具有从边界导出的水平和垂直斜率)和DC预测(具有与边界样本均值匹配的值的平面)。对于色度来说,可以使用水平、垂直、planar和DC预测模式,或者说色度预测模式可以表示为与亮度预测模式相同 (为了避免信号冗余,当优先四种选择的一种已经被指定并且和亮度帧内预测的预测模式相同时,我们用帧内角度预测【34】模式来代替它)。根据slice的类型不同,每个CB可以使用不同编码模式中的一种进行编码。和H.264/MPEG-4 AVC一样,所有类型的slices都支持帧内预测编码。HEVC支持多种帧内预测编码方式,比如Intra−Angular, Intra−Planar和 Intra−DC 模式。下面的小节将进一步简要说明这些技术以及一些其他常见的技术。
1)PB 分割
MxM(M=2N)大小的CB对于PB由两种分割方式 分割为2Nx2N或者NxN,前者对CB没有分割,后者将CB划分为相等大小的4个PB。但是,当当前CB的size大于最小CU的size时,可以使用4个较小的CBs来表示4个PBs指定的相同区域。因此,在HEVC中,当当前的CB的size等于最小CU的size时,只允许使用NxN分割方式。这就意味着,当CB采用帧内预测的编码方式且size不等于最小CU的size时,PB的size等于CB的size。即使在PB层已经建立了帧内预测模式 ,但对于每个TB来说,实际的预测处理是相互独立的。
2)帧内角度预测
空域主导的帧内预测在H.264/MPEG-4 AVC已经很成熟了,HEVC中同样也是空域主导,但是进行了扩充,主要是由于TB的size增大和可选择的预测模式的方向增多。相对于H.264/MPEG-4 AVC 的八种预测预测方向,HEVC支持33种预测方向,记做Intra−Angular[k],其中k为模式编号,2~34.角度模式的设计目的是为了对近水平和近垂直角提供更密集的覆盖,对近对角角提供更稀疏的覆盖,以反映角的观测统计普遍性和信号预测处理的有效性。当使用帧内角度预测模式时,每个TB根据空间邻域样本进行方向预测,这些样本在这次在预测之前已经重建好了(但还未通过内循环滤波器进行滤波)。对于一个大小为NxN的TB,在预测中一共有4N+1个空间邻域样本可以使用,如图6所示。除了当前TB的左、上、和右上的样本,在HEVC中,TB左下方的样本也可以用来进行预测(当来自之前的解码操作中为可用状态时)
帧内角度模式的预测过程包括根据给定的方向从投影参考样本位置推断样本 。为了避免在参考行列缓冲区之间 进行样本切换,对于k=2~17的帧内角度预测模式来说,位于上方的行的样本作为位于左侧的列的样本的投影 ;对于k=18~ 34的预测模式,左侧列的样本作为上面的行的 样本的投影。
为了提高帧内预测的准确度,参考样本的投影精度被计算为1/32个样本。应用双线性插值来获得参考样本投影的值,参考样本是使用两个位于整数位置并且最靠近的参考样本。在所有size的块和预测方式中,帧内角度模式的预测过程都是一样的,然而对于H.264/MPEG-4 AVC不同块大小的预测过程都是不同的。这个优点尤其重要,因为HEVC支持更多的TB的size和更多种类的方向预测。
3)帧内planar和DC预测
除了由很强方向性的边缘的目标区域使用帧内角度预测,HEVC还支持两种其他的方式:帧内planar和DC预测。帧内DC预测使用参考样本的均值进行预测,而帧内planar预测使用两个线性预测的均值以防止块的边缘不连续,这两个线性预测来自四个角的样本值。在HEVC中,帧内planar模式支持所有size的块。
4)参考样本平滑滤波
在HEVC中,帧内预测的参考样本经常用一个三抽头[1 2 1]/4的平滑滤波器进行滤波。HEVC对于平滑操作的应用更加自适应,根据方向性,不连续性数目和块的size的不同进行改变。对于4x4的块不进行平滑滤波;对于8x8的块,只有当预测方式为对角线方向时,即k=2、18、34时进行参考样值滤波;对于16x16的块,除了靠近垂直和靠近水平的方向(k=911或2527)不滤波,其他的都要进行滤波;对于32x32的块,除了垂直和水平方向(k=9/k=26),不连续数目超过门限,其他的都要滤波,并且利用相邻三个区域样本的双线性插值形成平滑的预测值。当块的size大于等于8x8时,帧内planar模式也会使用平滑滤波,但平滑滤波对于帧内DC模式没有用处。
5)边界值平滑
为了去除块边界的不连续性,在三种预测模式中DC预测 、角度预测(k=10和k=26)中,当TB的size小于32x32时,在TB中的边界样本被过滤后的值替换。对于DC预测模式,TB中的第一行和第一列样本被两抽头[3 1]/4的滤波器输出值代替,滤波器的输入为原始值和邻域样本;对于水平预测模式(k=10),TB第一列的边界样本被邻域参考样值的一半修正,并且加入了左上方的参考样本。这使得预测信号在垂直方向出现较大变化时更加平滑。在垂直预测模式(k=26)中,TB第一行的边界样本用同样的方法修正。
6)参考样值替换
在slices或者tiles边缘的邻域参考样本是无效的。此外,当使用一个限制帧内预测的损失恢复时,任何帧内预测的PB参考样值一般也认为是无效的,这样做是为了避免预先解码的图像数据将错误传播到预测信号中的风险。将不可用的参考样本值替换为相邻的可用参考样本值后,HEVC允许使用其他的帧内预测模式 。
7)模式编码
对于所有size的块的亮度预测,HEVC支持33种角度预测模式和planar模式和DC模式。由于方向数目的增加,当编码帧内预测模式的预测时,HEVC使用了三个最可能的编码模式(MPM)。在这三种最可能模式中,前两种模式由PBs的上方和左侧的亮度帧内预测模式确定,前提是那些PBs的值是有效的并且为帧内编码。任何无法获得的预测模式都被认为是帧内预测DC模式。(???)为了避免存储邻域亮度预测模式的缓冲区,在亮度CTB上方的PB通常被认为是无效的。
当前两个最可能预测模式不同时,第三个最可能预测模式按照这个顺序可以被设置为planar、DC和垂直(k=26),他们和前两个模式中的任何一个都不相同;当前两个最可能预测模式相同时,如果第一个模式是planar或者DC,那么第二个和第三个最可能模式按照顺序为planar、DC和垂直(k=26),且不能重复;当前两个最可能预测模式相同时,且第一个最可能模式为角度模式,则第二个和第三个最可能模式为最靠近第一个角度的角度预测模式。在当前的亮度预测模式是三个MPM中的一个时,只有MPM的索引传输到解码端。否则,将除了三种MPM的亮度预测模式索引用五个比特定长编码传输至解码器。
对于色度的帧内预测,HEVC允许编码器从五个预测模式中选择一个,planar、DC、derived、水平(k=10),垂直(k=26).Derived预测模式指定色度预测选择和亮度预测相同的预测模式。利用该方案,HEVC中为亮度指定的所有角度预测模式原则上也可以用于色度预测,在预测精度和信令开销之间实现了良好的权衡。所选色度预测模式都是直接编码的(不使用MPM预测机制)。
H、帧间预测
1)PB分割:
相对于CBs的帧间预测,HEVC对于CBs的帧间预测支持更多种PBs形状的划分。2Nx2N表示对CBs不进行分割,2NxN表示对CBs水平分为均等的两份,Nx2N表示对CBs垂直分为均等的两份。NxN表示将CB划分为均等的四份,但是这种情况只在CB的size等于所允许的最小CB的size。另外,有四种分割方式支持将CB分割为两个size不同的PB:2N×nU、2N×nD、nL×2N和nR×2N。这些种类一般被称作非对称运动分割。
2)分数样本插值
用于帧内预测的CB的PB样本来自于相对应的参考图片中的块区域。这个块区域被参考图像索引定义,索引中所对应位置的值被运动矢量的水平和垂直分量的值所代替。除了当运动矢量是整数值,其他情况分数样本插值用来为非整数抽样位置产生预测样值。HEVC支持运动矢量单位是亮度样本之间距离的1/4.对于色度信号来说,运动矢量的精度取决于色度的采样格式,4:2:0采样格式的精度单位为色度样本之间距离的1/8.
在HEVC中对于亮度信号的的分数样本插值,分别对半样本位置插值四分之一样本位置插值采用八抽头的滤波器和七抽头的滤波器。这点和H.264/MPEG-4 AVC不同,H.264/MPEG-4 AVC应用了一个两级插值过程,首先使用六抽头的滤波器在半样本位置的一个或两个邻域样本处产生值,对中间过程结果进行舍入,然后对位于整数或半样本位置的值进行平均。但HEVC应用了一个连续的独立插值过程来产生所有部分样本的差值,并且没有中间结果舍入,提高了准确度并且简化了部分样本插值的过程。HEVC中使用长滤波器(相对于H.264/MPEG-4 AVC的六抽头滤波器,HEVC使用七抽头、八抽头滤波器)提高了插值精度。由于四分之一样本位置和整数位置的相关性更大,所以使用七抽头的滤波器就可以满足需求,因此在八抽头插值器中距离最远的样本的相关性要比半样本插值差(so the most distant sample in an eight-tap
interpolator would effectively be farther away than in the half-sample case ???),半样本插值情况下,整数样本位置的相对距离时对称的。内插滤波核心的实际滤波器抽头值部分推导自DCT基函数方程。
图7:亮度帧间预测的整数和分数样本位置
如图7所示,大写字母标记的Ai,j代表了整数样本位置的有效样本值,其他小写字母标记的代表了非整数样本位置的需要进行内插的样本值。a0,j、 b0,j、c0,j、d0,0、h0,0和 n0,0的值都来自Ai,j样本值,推导规则遵循以下规则:
一般来说B>=8,为参考样值的比特深度(大多数情况等于8),抽头系数在表2中给出,>>表示算术右移运算。
表2:滤波器抽头系数
被标记为e0,0、f0,0、 g0,0、i0,0、 j0,0、 k0,0、p0,0、 q0,0和r0,0的样本可以由对应垂直方向的样本a0,j、 b0,j、c0,j推导得到:
当B=8时,内插滤波器是可分离的,因此一些样本的值可以在水平滤波前进行垂直滤波来计算得到。当应用适当时,HEVC的运动补偿过程仅仅使用16比特的存储元素(必须严格保证正确性)。正是在这一点上,编码器选择加权预测处理。H.264/MPEG-4 AVC支持时域隐式和显式加权预测,而在HEVC中只使用显示加权预测,通过对编码器传输来的值进行缩放和偏移来实现。预测的比特深度调整至原始参考样本的比特深度。在单向预测的情况下,插值(也可能是权重)预测是被舍入的,右移的且被修正为和原始样本的比特深度一致。在双向预测中,插值(也可能是权重)预测值来自两个PB首先相加,再舍入、右移和修正。
在H.264/MPEG-4 AVC中,要获得每个预测样本(四分之一样本位置)需要进行多达三次的舍入操作。如果使用双向预测,在最坏的情况下要进行七次舍入操作。而在HEVC中,要获得每个预测样本(四分之一样本位置)最多需要进行两次的舍入操作,如果使用双向预测在最坏的情况下也只有五次舍入操作。然而,在最常见的用法当中,B的比特深度为8,最坏情况下的舍入操作可以限制为三次。由于低次数的舍入操作,产生的误差大大降低并且在译码器中执行必要操作的方式上具有更大的灵活性。对于4:2:0的抽样格式,色度分量的分数采样插值过程与亮度分量的分数采样插值过程相似,除了采用四抽头滤波器和精度为1/8。HEVC为八分之一样本位置定义了一组四抽头滤波器(H.264/MPEG-4 AVC中只使用两抽头线性滤波器),如表3给出了在4:2:0色度格式下的情况。
表3:色度分数样本内插滤波器的抽头系数
滤波器系数被定义为filter1[i], filter2[i], fil-ter3[i]和 filter4[i] , i = −1,. . . , 2分别用于色度样本的1/8,2/8,3/8,4/8位置的分数预测插值。对于5/8,6/8,7/8位置的插值预测利用其对称性分别为filter3[1−i], filter2[1−i]和 filter1[1−i] with i = −1, . . . ,2的镜像值。
3)融合模式
运动信息通常由水平和垂直运动矢量位移值、一个或两个参考图像索引组成,如果是B片中的区域,则标识哪个参考图像列表与每个索引相关联。HEVC包括一个融合模式,从时域或空域的邻域中获得运动信息。由于一个合并区域共享所有的运动信息,因此被标记为合并模式。在H.264/MPEG-4 AVC中,从概念上讲合并模式和skip模式和direct模式相似,但是在HEVC中他们有两个本质的区别。首先,它一般遵从一种运动矢量竞争机制,通过传输索引从多个候选模式中选出一个;其次明确定义了参考图片列表和索引,然而在direct模式中会假定有预设初值。
在图像融合模式中,最可能候选模式的设置包括空间邻域候选者,时间邻域候选者和生成邻域候选者。图8表示五个空间邻域候选者的划分。
图8:运动信息的空域候选者位置
对于这5个候选位置,根据 {a1, b1, b0, a0, b2}这个顺序进行可用性检查。如果在这些位置的块是帧内预测或者不在当前的slice或者tile,就被认为是无效的。在有效性验证之后,可以去掉两种冗余信息。如果当前候选位置所在的PU是同一个CU中的第一个PU,这个位置被排除,这是由于相同的合并可以由一个CU实现,而不需要分裂成预测分区,而且,那些拥有同样运动信息的冗余项也同样被排除。
对于时域候选模式,如果参考图片的配置PU的右下角位置有效,则可以被使用;否则,则使用中心位置代替。对于配置PU的选择方法类似于之前的标准,但是HEVC更加灵活。即通过传输索引来确定在已配置参考图片中使用的参考图片列表。与使用时域候选模式相关的一个问题是存储参考图像的运动信息的内存量。这一问题可通过严格限制粒度即只使用16x16的亮度格的分辨率来存储时域运动候选模式来解决。另外,PPS层的一个标志位允许编码器不使用时域候选模式,这对于易出错的传输环境非常有利。
在slice的头中,融合候选模式数目的最大值C已经被明确。如果融合候选模式数目(包括时域候选模式)超过了最大值,只有前面C-1个空域候选模式和时域候选模式被保留;否则,产生额外的候选模式直到数量等于C。由于这种方法的解析编码数据的能力不依赖于融合候选模式的可用性,大大简化了解析过程、增强了鲁棒性。
对于B slice,额外的融合模式通过在参考图片的list 0或list 1的预定义顺序中选择两个(???)已经存在的候选模式。例如:第一个生成候选模式使用list 0中的第一个候选模式,第二个使用list 1中的第一个候选模式。HEVC中已经定义了12个预定义对,在已经形成的融合候选模式表中,按照以下顺序排列:(0, 1), (1, 0),(0, 2), (2, 0), (1, 2), (2, 1), (0, 3), (3, 0), (1, 3), (3, 1), (2, 3)和(3, 2)。在去除冗余项之后,在上面的至多有五个候选模式可以被使用。
当为P slice或者融合候选模式的数目还是低于C个,用与来自0到参考图片的最小数目1的参考索引有关的0运动矢量来填满融合候选模式表的剩余部分。
在HEVC中,当全部的编码块标志位为0时,skip模式等同于一种特殊的融合模式。在这种特殊的情况下,只有一个skip标志位和相应的融合索引传输至解码端。H.264/MPEG-4 AVC中的B-direct模式也被融合模式所代替,这是由于融合模式允许所有推导自邻域块的时域和空域运动信息的所有运动信息使用残差编码。
4)对于非融合模式的运动矢量预测
当一个帧间预测的CB没有在skip或者融合模式下编码,使用运动矢量预测器对运动矢量进行差分编码。和融合模式相似,HEVC允许在多种预测器候选者中选择一个运动矢量预测器。预测器和实际运动矢量的差值、候选者列表被传输至解码端。在图8的五个候选者中只选择两个空域候选者,根据他们的有效性,按照以下排列顺序,第一个从{a0, a1}中选择,第二个从{b0, b1, b2}中选择。对于非融合模式,HEVC在运动矢量预测处理中只支持使用很少数目的候选者,这是因为编码器可以发送一个编码差来改变运动矢量。而且,编码器需要进行运动估计(在编码器中这是一项十分耗费的操作),并且很少数目的候选者也可以减少复杂度。
当邻域PU的参考索引不等于当前PU,我们使用运动矢量的缩小版本。相邻的运动矢量根据邻域PU和当前PU的参考索引分别表示的当前图像与参考图像之间的时间距离进行缩放。当两个空间候选者具有相同的运动矢量分量时,排除一个冗余的空间候选者。
当运动矢量预测器的数目不等于2且时域运动矢量预测没有明确地被确认为无效,时域运动矢量预测可以被包括。这就意味着,当两个空域预测候选者全部有效时不使用时域预测候选者。最后,重复包含一个零运动矢量,直到运动矢量预测候选数等于2,这保证了运动矢量预测数为2。因此,只需要一个编码标志来识别在非合并模式下到底使用哪种运动矢量预测。
I、变换、缩放和量化
和之前的标准相似,HEVC中对预测误差残差进行变换编码,残差块被分割为若干个方形TBs,如IV-E中描述一样。支持的变换块的大小有4x4、8x8、16x16和32x32。
1)核心变换
二维变换是在水平和垂直方向都使用一维变换实现的。核心变换中的矩阵元素都是推导自近似缩放的DCT基函数,必须要考虑到:变换计算的最大动态范围、精度最大化和当矩阵项被指定为整数值时,要尽可能保持正交性。为了简化,只规定了一个长度为32点(length-32)的矩阵,其他长度大小采用下采样版本。例如,length-16变换的矩阵如下面的方程所示。
对于length-8和length-4的变换矩阵可以分别使用0,2,4…行的前八个元素和0,4,8…行的前四个元素。虽然标准根据矩阵的值来进行变换,但是被挑选的矩阵的元素的值具有严格的对称性,这样相对于原始的矩阵乘法操作能够在很少数学操作的情况下快速对局部实施计算,同时也可以使用较小的转换作为构建块来构造较大的转换。
由于变换的size增大了,因此从变换的第一级开始控制中间变量的动态范围就显得尤为重要。HEVC在第一层反变换(垂直反变换这一级)明确插入了7比特的右移操作和16比特的剪切操作,来保证所有的中间变量值能够储存在16比特的内存中(对于8比特的视频解码)。
2)其他的4x4变换
对于4x4的变换块,可以使用一个推导自DST的亮度残差块用于帧内预测模式,变换矩阵如下:
DST的基函数更符合残差振幅随距离边界样本距离增大而增大的统计特性。从复杂度来分析,4x4的DST风格的变换比4x4的DCT风格的变换减少了计算量,并且在帧内预测编码中能够减小大约1%的传信率。只有4x4的亮度变换块能够使用DST类型的变换,因为在其他情况下DST对于性能的提高是微不足道的。
3)缩放和量化
由于变换矩阵的行是标准正交DCT的均匀缩放基函数值的近似,所以在HEVC中不需要包含H.264/MPEG-4 AVC的去量子化中的预缩放操作。特别是在考虑到转换的大小可以大到32x32时,这种避免特定频率的基函数缩放的方法在还原中间内存大小时非常有用。
对于量化来说,HEVC使用类似于H.264/MPEG-4 AVC,使用一个由量化参数(QP)控制的URQ结构。QP的值从0~51,量化步长增加六倍,QP对于量化步长的映射值为对数。量化缩放矩阵也已经给出。为了减少频率特性缩放值需要的存储,仅仅使用4x4和8x8的量化矩阵。对于16x16和32x32的变换,除了在直流(零频率)位置的值外,通过发送和应用一个8x8的矩阵,除了在直流(零频率)位置的值外,这个8x8矩阵通过在频率子空间的2x2和4x4的系数组内共享值来应用。(For the larger transformations of 16×16 and 32×32 sizes, an 8×8 scaling matrix is sent and is applied by sharing values within 2×2 and 4×4 coefficient groups in frequency subspaces—except for values at DC (zero-frequency)positions, for which distinct values are sent and applied.???)
J、熵编码
HEVC中只使用一种熵编码方式——CABAC。而 H.264/MPEG-4 AVC支持两种。CABAC算法的核心没有改变,下面从几个方面介绍在HEVC中的CABAC:
1)context 建模
对于提高CABAC编码效率,合适的context建模是关键因素。在HEVC中,根据 编码树和变换树的分割深度 来推导出在H.264/AVC中使用的空间邻域的不同语法元素的context模型索引。例如:语法元素skip−flag 定义了CB在编码时是否使用skip的帧间编码模式,语法元素split−coding−unit−flag 定义了被进一步分割的CB是否使用基于空间邻域信息的context模型进行编码。语法元素split−transform−flag 定义了进一步被划分的TB和对于每种颜色分量cbf−luma,cbf−cb and cbf−cr定义非零变换系数的三个语法元素是否基于变换树的分割深度进行编码。虽然HEVC中的context的数目比 H.264/AVC少,但是能够提供性能更高的压缩性能。此外,HEVC更广泛地使用了CABAC操作的bypass模式,通过减少需要使用CABAC context模式编码的数据量来提高吞吐量。编码数据之间的相关性也一般用来增大吞吐量。
2)自适应系数扫描
对于全部size的TB,4x4的子块使用系数扫描(对于4x4大小的TB仅仅使用一个系数区域,对于更大尺寸的TB要使用多系数区域)。如图9所示,有三种系数扫描模式:右上对角线、水平和垂直扫描模式。在帧内编码区域中,选择一个来对4x4或者8x8的TB的传输系数进行编码。系数扫描模式的挑选顺序根据帧内预测的方向性。当预测方向靠近垂直方向时使用水平扫描;当预测方向靠近水平方向是使用垂直扫描,;对于其他预测方向,使用右上对角线扫描方式。
图9:(a)右上对角线(b)水平(c) 垂直
对于所有size的块的帧间预测模式的变换系数和16x16、32x32的帧内预测块的变换系数,只能将4x4的右上对角线扫描模式 应用到变换系数的子块中。
3)系数编码
和H.264/MPEG-4 AVC类似,HEVC传输上一个非零变换系数的位置、有效的映射、标志位和变换系数的级数。然而,对于不同的部分做出了相应的变化,尤其在处理大尺寸TB的方面。
首先,对于TB来说,在发送表明其他变换系数有非零值的4x4子块的有效映射之前,上一个非零变化系数的水平和垂直频率坐标位置被编码。而不是和H.264/MPEG-4 AVC中发送一系列上个系数的标志位,这些标志位通过有效映射进行交织。
对与大小为固定的4x4子块相关的有效群组,推导出有效映射。对于所有那些在最后一个系数位置之前至少有一个系数的组 ,一个有效组标志位可以表明一个非零系数组是否被传输,其次是系数有效标志,每个系数在最后一个有效系数的指示位置之前。(followed by coefficient significance flags for each coefficient prior to the indicated position of the last significant coefficient.) 对于有效系数标志位的context模型,取决于系数位置和有效群组标志位的右方和上方的值。
标志位数据隐藏的方法被用来进一步提高压缩性能。基于编码系数的个数和位置对标志位进行编码。当使用标志位数据隐藏时,至少有两个在4x4子块中的非零系数,第一个和最后一个非零位置的扫描差值大于3.第一个非零系数的标志位来自系数振幅总和的奇偶校验位。否则,标志位按照一般方法进行编码。在编码器端,这可以通过选择一个振幅接近量化区间边界的系数来实现,当奇偶校验不能以其他方式指示第一个系数的正确标志位时,可以强制使用相邻的量化区间。这就使标志位数据能够相对于独立编码以一种损失较低的方式编码(对于率失真而言),即编码器可以选择:在变换时,率失真最低的变换系数振幅 。
对于对应的有效系数标志位为1的位置,需要两个标志位来确定层数值(level value???)是否大于一个或两个已编码值,然后剩余的层数值基于那两个值进行编码。
K、内循环滤波器
在HEVC中,在将样本写入解码缓冲区之前,去块效应滤波器(DBF)和SAO滤波器在解码循环部分中重建样本。DBF用来去除使用块编码所产生的块效应,DBF类似于H.264/MPEG-4 AVC中的DBF,但是SAO是HEVC新引人的。 DBF能够在块边界样本处使用,但SAO能够自适应地应用在满足一定条件下的全部样本(比如,基于梯度)。在HEVC的发展过程中,自适应环路滤波器(ALF)本来要在SAO之后引入,但是最终的设计中没有ALF。
1)去块效应滤波(DBF)
DBF应用在所有和TU和PU边界相邻的样本上,除非这个边界也是图片的边界,或者,当跨越slices或者tiles的边界时,去块效应是无效的(编码器可以通过标志位控制)。值得注意的是,在一些帧间预测CBs的情况下,因为PU的边界不一定就和TU的边界对齐,所以同为PU和TU的边界的情况要考虑到。SPS中的语法元素和slices中的头控制是否在横跨slice和tile的边界处使用DBF。H.264/MPEG-4 AVC中DBF应用在4x4的基础网格中,而HEVC对于亮度和色度样本均使用8x8的网格进行去块效应滤波。这种严格限制减少了不考虑视觉质量衰退情况下的最坏情况的计算复杂度。通过防止相邻滤波操作之间的相互作用改进了并行处理操作。和H.264/MPEG-4 AVC相似,DBF的强度通过几个语法元素被控制,但不同的是只应用了3个强度而不是5个。给出的块P和Q是有公共8x8网格边界的两个相邻块,当其中一个块是帧内预测时,强度给定为2,否则,如果符合下列任何一种情况,则给定强度为1:
1)P或者Q有至少一个非零变换系数
2)P和Q的参考索引不相等
3)P和Q的运动矢量不相等
4)P和Q之间的运动矢量分量差值大于等于一个整数样本。
如果上述情况没有一个符合,即DBF强度为0,即不应用DBF。
对于滤波器的强度和P和Q的平均量化参数—门限tc和 β,都在初始化的表格中进行定值。对于亮度样本,无滤波、强滤波、弱滤波、如果出现是3种情况之一,则选择基于β。注意,这个决策是跨4个luma行或列共享的,通过使用第一或最后一行或列来减少计算复杂性。对于色度样本,只有无滤波和一般滤波,并且只有当滤波强度大于1时才使用一般滤波。在使用滤波变量tc和 β之后,才开始进行滤波处理。
在HEVC中,去块效应的处理顺序被定义为:首先对于整幅图片对垂直边界进行水平滤波,然后对水平边界进行垂直滤波。这种特定的顺序应用在并行处理线程的多水平和垂直滤波和低处理延迟的CTB-by-CTB中。
2)SAO
SAO可以通过对去块效应后的每个样本值加上偏移量来修正解码样本,基于查表的值也从编码器传输。SAO滤波是在区域基础上执行的,基于由语法元素sao−type−idx控制的每个CTB选择的滤波方式。sao−type−idx为0时表示CTB没有运用SAO滤波器,当值为1或2分别表示滤波类型为带偏移和边界偏移滤波。
sao−type−idx为1时为带偏移滤波模式,选择的偏移量的值直接来自样本振幅。在这种模式下,全部的样本振幅范围被一致的划分为32个带,属于这32个带中连续的带中的四个样本值加上传输的带偏移量进行修正,可能是积极或消极的。使用连续的带的主要原因为在一些平缓区域可能会出现带效应,一个CTB中的样本振幅可能被集中在很少的几个带中。此外,四偏移量的设计选择与四偏移量的边缘偏移操作模式统一。
sao−type−idx为2时为边缘偏移滤波模式,一个语法元素sao−eo−class 可能从0~3分别表示水平、垂直、两种对角线梯度方向。这个语法元素的值用于考量一个CTB中的边缘偏移级别。图10表示了这种模式下的sao−eo−class分别对应的四种梯度模式。
图10:SAO中的梯度模式,p代表了考虑的中心样本。n1和n0分别代表了两个邻域样本。
(a)水平【sao−eo−class = 0】梯度模式
(b)垂直【sao−eo−class = 1】梯度模式
(c)135°对角线【sao−eo−class = 2】梯度模式
(d)45°对角线【sao−eo−class = 3】梯度模式
CTB中的每个样本被标记为五个边缘索引类中的一个。边缘索引类是通过比较中心点p和邻域点n0和n1的样本值形成的,如表4所示:
表4:SAO边缘级别的样本边缘索引分类
这个对于每个样本的分类是基于解码后的样本值,因此对于样本边缘索引分类不需要额外的信号。在样本位置的基于样本边缘索引分类,对于类1~类4,来自传输的查表偏移量于样本值相加;一般类1、2的偏移量为正的,类3、4的偏移量为负的。因此在边缘偏移模式中,滤波器经常有一个平滑的作用。
因此,对于SAO的模式1和2,对于每个CTB来说,四个幅度偏移量值被传输至解码端。对于方式1,这个信号也同样被编码。偏移量的值和相关语法元素如sao−type−idx 和sao−eo−class 在编码器根据优化率失真性能的标准来确定。可以使用合并标志位,当它有效时,将SAO参数指示为从左边或上面的CTB继承。总的来说SAO是一个非线性滤波操作,可以对重建信号进行额外的细化,可以增强平滑区域和边缘的信号表示。
L、特殊编码方式
HEVC还定义了三种特殊编码方式,可以在CU或TU层进行调用。
1)在I−PCM模式中,不进行预测、变换、量化和熵编码,样本直接由比特的预定义数目代表。主要思想是基于:当信号特性及其不寻常并且不能由混合编码很好处理时(如类噪声信号),来避免过度的比特消耗。
2)在无损模式中,预测、变换和影响被解码图片的其他操作(SAO和DBF)一概被省略,来自帧间和帧内预测的残差信号直接输入至熵编码器(使用量化变换系数常使用的类似的邻域contexts),这样就能精确地进行无损重建,并且不需要定义额外的编码工具。
3)在变换skipping模式中,只有一个变换被舍去。它能够在视频内容类型确定的情况下提高压缩性能,视频内容类型为计算机生成图像,相机和图表混合内容(如:滚动字幕)。这种模式只能够应用在4x4大小的TB中。
SAO和DBF不应用于无损模式区域,而在I−PCM区域中有一个标志位控制它们是否被应用。
五、配置文件、层和级别
A、文件、级别和层的基本概念
文件、层和级别指定了在具有类似功能需求的各种应用程序之间以可互操作的方式实现标准的相同点。一个profile定义了定义了一个编码工具或者是语法的集,这个集可以用来产生一个合格的二进制码流,然而级别(level)能够限制码流中的关键参数,和对应译码器处理负载和内存的能力。Level的限制条件确定的依据是最大采样速率、最大图片size、最大比特速率、最小压缩比例、DPB的容量、编码图片缓存(CPB——为数据流管理目的,在解码前保存压缩数据)。在HEVC中,有一些应用程序的要求只在最大比特率和CPB容量方面有所不同。为了解决这个问题,对于一些level明确了两个tiers,用于大多数应用程序的main tier和用于要求最高的应用程序的high tier。
一个符合确定tier或者level的解码器,必须能够对相同tier和更低tier或相同level和更低level的码流进行解码。解码器符合一个特定的Profile,必须支持这个profile的所有特点。编码器不需要使用profile中的任何特性,但是需要产生符合条件的比特流(被一定条件约束,并且可以在相应的解码器进行解码)
B、HEVC的profile和level定义
针对不同的应用需求只有三个profile(被称作Main, Main 10和 Main Still Picture profiles)被最终制定。提供Profiles数量的最小化能够使设备之间的交互性达到最大,更能适应传统的独立设备(例如广播、电话和流媒体),使得大多数传统设备是可用的并且支持全部的profiles。
三个Profiles的草案中的编码工具和高层语法结构在本文的前面已经和详细介绍了,并且有以下的几点限制:
1)只支持4:2:0色度采样;
2)当编码器对图片编码使用复合tiles时,不能使用波阵面并行处理过程,每个tile的宽度至少为256个亮度样本,高度至少为64个亮度样本;
3)在 Main 和Main Still Picture profiles中,整个比特流只能包括一个编码图片(因此不支持帧间预测)
目前,标准的第一个版本计划对13个level进行定义。如表5,包括了从size为176×144的很小的亮度图片到size为7680×4320很大的图片。图片的高度和宽度必须要小于等于
MaxLumaPS 是表5中的最大亮度图片的size。这样做是为了避免解码器需要处理极限尺寸的图像。
表5:对于MAIN profile的level的限制条件
对于四层及以上的8个level有两个tiers支持。CPB的容量等于除了level 1的全部level的最大比特速率时间(maximum bit rate times 1 s for all levels except level 1???),level 1 有350000比特的CPB容量。当level支持最大图片size的时候(包括用于参考和输出的,同时存在于解码器的当前图片和其他图片),在每一level的特定的最大DPB容量为6幅图片。当对一幅size小于level支持的最大图片size时,DPB的存储能力可以提升至16幅图片(取决于挑选的图片大小)。特定level的约束也被指定为:每幅图片中水平和垂直方向的最大tile数目和每秒使用tile的最大数目。