目录
- 摘要
- 1.前言
- 2.标准化视频编码方案的概念
- 3. H.264/AVC 编码方案
- 3.1 帧内预测
- 3.2 运动补偿预测
- 3.3 变换编码
- 3.4 熵编码方案
- 3.5 自适应去块滤波器
- 3.6 错误鲁棒性和网络友好性
- 4.码率受限的编码器控制
- 5. H.264/AVC 的配置文件和级别
- 6.与先前标准的比较
- 6.1 编码效率
- 6.2 硬件复杂度
- 6.2.1 主要H.264/AVC编码工具的复杂度分析
- 6.2.2 主要H.264/AVC解码工具的复杂度分析
- 6.2.3 其他考虑
- 7. H.264/AVC 技术的许可
- 8. 总结
- 附录中与性能分析相关的文章:
《Video coding with H.264/AVC: tools, performance, and complexity》
Author: J. Ostermann; J. Bormans; P. List; D. Marpe; M. Narroschke; F. Pereira
Published in: IEEE Circuits and Systems Magazine ( Volume: 4, Issue: 1, 2004)
Page(s): 7 - 28
Date of Publication: 02 August 2004
ISSN Information:
Print ISSN: 1531-636X
Electronic ISSN: 1558-0830
DOI: 10.1109/MCAS.2004.1286980
Publisher: IEEE
摘要
H.264/AVC 是国际标准化组织/国际电工委员会移动图像专家组(ISO/IEC Moving Picture Experts Group)和国际电信联盟电信标准分局视频编码专家组(ITU-T Video Coding Experts Group)合作的最新成果,是视频编码的最新标准。该标准的目标是提高压缩效率,提供适合交互式(视频电话)和非交互式应用(广播、流媒体、存储、视频点播)的网络友好型视频表示。与之前的标准相比,H.264/AVC 在广泛的比特率和视频分辨率下提供了高达50%的压缩效率提升。与之前的标准相比,H.264/AVC 的解码复杂度大约是MPEG-2的四倍,MPEG-4 Visual Simple Profile的两倍。本文概述了H.264/AVC的新工具、特性和复杂度。
1.前言
新的视频编码标准 ITU-T 建议 H.264,也称为国际标准 ISO/IEC 14496-10 或 MPEG-4 第10部分高级视频编码(AVC)[1],是继 H.261(1990)[2]、MPEG-1 视频(1993)[3]、MPEG-2 视频(1994)[4]、H.263(1995, 1997)[5] 和 MPEG-4 视觉或第2部分(1998)[6] 之后的最新视频编码标准。这些先前的标准反映了视频压缩技术的进步以及视频编码对不同应用和网络的适应。应用范围从视频电话(H.261)到消费类视频光盘(MPEG-1)和标准或高清晰度电视的广播(MPEG-2)。用于视频通信的网络包括交换网络,如公共交换电话网(PSTN,H.263, MPEG-4)或综合业务数字网(ISDN,H.261)以及分组网络,如异步传输模式(ATM,MPEG-2, MPEG-4)、互联网(H.263, MPEG-4)或移动网络(H.263, MPEG-4)。新型网络接入技术(如电缆调制解调器、xDSL 和 UMTS)的重要性催生了对新视频编码标准 H.264/AVC 的需求,该标准在互动应用(如要求低延迟系统的视频电话)和非互动应用(如标准清晰度电视的存储、广播和流媒体)方面提供了增强的视频压缩性能。特别需要注意的是,在使用易出错的网络(如UMTS和GSM的移动信道(比特错误)或电缆调制解调器和xDSL上的互联网(数据包丢失))时的性能。将 H.264/AVC 的视频编码工具(如多参考帧、1/4像素运动补偿、去块滤波器或整数变换)与先前视频编码标准的工具进行比较,H.264/AVC 在标准化视频编码的演进中带来了最大的算法间断性。同时,H.264/AVC 实现了编码性能的飞跃,这是五年前无法预见的。这一进步得益于 ITU-T 和 MPEG 的视频专家在2001年12月成立的联合视频团队(JVT),以开发这一 H.264/AVC 视频编码标准。H.264/AVC 于2003年3月完成,并于2003年5月获得 ITU-T 的批准。相应的标准化文档可从 ftp://ftp.imtc-files.org/jvtexperts 下载,参考软件可在 http://bs.hhi.de/~suehring/tml/download 获取。
现代视频通信使用从摄像机捕获的数字视频或使用适当的工具(如动画软件)合成的数字视频。在可选的预处理步骤(图1)中,发送方可以选择使用格式转换或增强技术对视频进行预处理。然后,编码器对视频进行编码,并将其表示为比特流。比特流通过通信网络传输后,解码器对视频进行解码,解码后的视频在显示前经过一个可选的后处理步骤,该步骤可能包括格式转换、滤波以抑制编码伪影、错误隐藏或视频增强。
该标准定义了比特流的语法和语义,以及解码器在将比特流解码为视频时需要执行的处理。因此,视频解码器制造商只能在成本和硬件需求等方面进行竞争。解码后的视频的可选后处理是另一个不同制造商提供竞争工具的领域,以创建针对特定应用优化的解码视频流。标准没有定义如何进行编码或其他视频预处理,从而使得制造商能够在成本、编码效率、错误恢复能力和硬件需求等方面通过他们的编码器进行竞争。同时,比特流和解码器的标准化保留了任何通信标准的基本要求——互操作性。
为了在不同的环境中高效传输,不仅编码效率是相关的,还需要将编码后的视频无缝且容易地集成到所有当前和未来的协议和网络架构中。这包括尽力而为交付的公共互联网,以及预计将成为新视频编码标准主要应用的无线网络。编码视频表示或比特流对不同传输网络的适配通常在之前的MPEG标准的系统规范或单独的标准(如H.320或H.324)中定义。然而,只有网络适配和视频编码的紧密结合才能带来视频通信系统的最佳性能。因此,H.264/AVC 由两个概念层组成(图2)。视频编码层(VCL)定义了视频的有效表示,而网络适配层(NAL)将VCL表示转换为适用于特定传输层或存储介质的格式。对于电路交换传输(如H.320、H.324M或MPEG-2),NAL将编码后的视频作为包含起始码的有序字节流交付,以便这些传输层和解码器能够稳健且简单地识别比特流的结构。对于分组交换网络(如RTP/IP或TCP/IP),NAL将编码后的视频以不包含这些起始码的数据包形式交付。
本文概述了H.264/AVC的工作原理、性能和硬件要求。在第2节中,介绍了标准化视频编码方案的概念。在第3节中,我们描述了H.264/AVC的主要工具,这些工具实现了视频编码性能的提升。视频编码器优化不在标准范围内,但成功使用编码器需要了解编码器控制,相关内容在第4节中介绍。H.264/AVC 可用于具有非常不同约束条件的各种应用,如计算资源、错误恢复能力和视频分辨率。第5节描述了H.264/AVC的配置文件和级别,这些配置文件和级别允许解码器复杂度适应不同的应用。在第6节中,我们从编码效率和硬件复杂度方面对H.264/AVC与之前的视频编码标准进行了比较。H.264/AVC 使用了许多国际专利,第7节概述了H.264/AVC 商业使用的当前许可模型。
2.标准化视频编码方案的概念
标准化的视频编码技术,如H.263、H.264/AVC、MPEG-1、MPEG-2和MPEG-4,都是基于混合视频编码的。图3展示了这种混合视频编码器的通用框图。
输入图像被划分为宏块。每个宏块包含三个组件:Y、Cr和Cb。Y是亮度组件,表示亮度信息。Cr和Cb表示色度信息。由于人眼对色度的敏感度低于对亮度的敏感度,色度信号在水平和垂直方向上都被以2的比例进行下采样。因此,一个宏块包含一个16x16像素的亮度组件块和两个8x8像素的色度组件块。
这些宏块以帧内(Intra)或帧间(Inter)模式进行编码。在帧间模式中,宏块使用运动补偿进行预测。对于运动补偿预测,为每个块估计并传输一个位移向量(运动数据),该向量指向已传输并存储在内存中的参考图像中对应的位置。在帧内模式中,早期标准将预测信号设为零,使得图像可以在不参考之前发送的信息的情况下进行编码。这对于提供错误恢复能力和为比特流提供随机访问的入口点非常重要。预测误差是原始块和预测块之间的差异,经过变换、量化和熵编码。为了在解码端重建相同的图像,量化系数进行逆变换并加到预测信号上。结果是重建的宏块,该宏块也在解码端可用。这个宏块存储在内存中。宏块通常按光栅扫描顺序存储。
相对于这个简单的框图(图3),H.264/AVC 引入了以下变化:
(1) 为了减少块效应,预测环路中使用了自适应去块滤波器。去块后的宏块存储在内存中,并可用于预测未来的宏块。
(2) 而在早期标准中内存中只包含一帧视频,H.264/AVC 允许在内存中存储多帧视频。
(3) 在 H.264/AVC 中,帧内模式也使用了一种预测方案,该方案利用同一图像中已传输的宏块的图像信号来预测要编码的块。
(4) 早期标准中使用的离散余弦变换(DCT)被替换为整数变换。
图4展示了相应解码器的通用框图。熵解码器解码量化系数和运动数据,这些数据用于运动补偿预测。与编码器一样,通过帧内预测或运动补偿预测获得预测信号,该预测信号与逆变换后的系数相加。经过去块滤波后,宏块被完全解码并存储在内存中,以供进一步预测使用。
在H.264/AVC中,宏块以所谓的Slice为单位进行处理,而一个Slice通常是一组按光栅扫描顺序处理的宏块(见图5)。在特殊情况下,处理顺序可能不同于光栅扫描顺序,这将在第3.6节中讨论。支持五种不同的Slice类型,分别是I-Slice、P-Slice、B-Slice、SI-Slice和SP-Slice。在I-Slice中,所有宏块都以帧内模式编码。在P-Slice中,所有宏块使用一个参考帧的运动补偿预测进行预测,而在B-Slice中使用两个参考帧进行预测。SI-Slice和SP-Slice是用于高效切换两个不同比特流的特殊Slice,这两种slice将在第3.6节中讨论。
对于交错视频的编码,H.264/AVC 支持两种不同的编码模式。第一种模式称为帧模式。在帧模式中,一个帧的两个场像一个单一的逐行扫描帧一样一起编码。第二种模式称为场模式。在这种模式中,一个帧的两个场分别编码。这两种不同的编码模式可以为每个图像甚至每个宏块选择。如果为每个图像选择,这种编码方式称为图片自适应场/帧编码(P-AFF)。而MPEG-2允许在宏块级别选择帧/场编码,H.264允许在垂直宏块对级别选择这种模式。这种编码方式称为宏块自适应场/帧编码(MB-AFF)。帧模式在不移动的区域中是高效的。在不移动的区域中,即使这些行属于不同的场,相邻行之间也有很强的统计依赖关系。这些依赖关系可以在帧模式中得到利用。在移动区域中,相邻行之间的统计依赖关系要小得多。在这种情况下,采用场模式并分别编码两个场更为高效。
3. H.264/AVC 编码方案
在本节中,我们描述了使H.264成为如此成功的视频编码方案的工具。我们将讨论帧内编码、运动补偿预测、变换编码、熵编码、自适应去块滤波器以及错误鲁棒性和网络友好性。
3.1 帧内预测
帧内预测意味着一个宏块的样本仅使用同一图像中已传输的宏块的信息进行预测。在H.264/AVC中,对于亮度组件Y的预测,有两种不同的帧内预测类型。
第一种类型称为INTRA_4×4,第二种类型称为INTRA_16×16。使用INTRA_4×4类型时,大小为16×16像素的宏块被划分为十六个4×4子块,对每个4×4子块的亮度信号分别进行预测。为了预测,支持九种不同的预测模式。其中一种模式是DC预测模式,即当前4×4子块的所有样本都由其左侧和上方已重构的样本的平均值进行预测(见图6,模式2)。除了DC预测模式外,还支持八种特定预测方向的预测模式。所有可能的方向如图7所示。模式0(垂直预测)和模式1(水平预测)在图6中明确显示。例如,如果应用垂直预测模式,那么样本A下方的所有样本都由样本A预测,样本B下方的所有样本都由样本B预测,依此类推。
使用INTRA_16×16类型时,整个宏块只应用一种预测模式。INTRA_16×16类型支持四种不同的预测模式:垂直预测、水平预测、DC预测和平面预测。平面预测使用左侧和上方邻近样本之间的线性函数来预测当前样本。这种模式在亮度渐变平缓的区域表现非常好。这些模式的运作方式与4×4预测模式相同,唯一的区别是它们应用于整个宏块而不是4×4子块。如果宏块内的信号非常平滑,这些模式的效率非常高。
宏块的色度信号Cb和Cr的帧内预测类似于亮度信号的INTRA_16×16类型,因为色度信号在大多数情况下非常平滑。它始终在8×8块上进行,使用垂直预测、水平预测、DC预测或平面预测。所有帧内预测模式的详细解释见文献[1]。
3.2 运动补偿预测
在运动补偿预测的情况下,宏块从已传输的参考图像的图像信号中进行预测。为此,每个宏块可以被划分为更小的分区。支持的亮度块大小为16×16、16×8、8×16和8×8样本。对于P-Slice中的8×8子宏块,一个额外的语法元素指定该8×8子宏块是否进一步划分为8×4、4×8或4×4的分区[8]。宏块和子宏块的分区如图8所示。
在早期标准如MPEG-4或H.263中,只支持16×16和8×8大小的块。为每个块估计并传输一个位移向量,该向量指向前一个已传输的参考图像中对应的图像信号位置。在早期的MPEG标准中,这个参考图像是最近的前一个图像。而在H.264/AVC中,可以引用多个前一个图像。为此,需要与运动向量一起传输一个额外的图像参考参数。这种技术被称为多参考帧的运动补偿预测[9]。图9说明了这一概念,并将其扩展到B-Slice。
位移向量的精度是一个像素的四分之一(四分之一像素或1/4像素)。这样的分数像素分辨率的位移向量可能指向参考图像中位于其图像信号采样位置之间的位置。为了估计和补偿分数像素位移,需要通过插值在子像素位置生成参考图像的图像信号。在H.264/AVC中,半像素位置的亮度信号是通过应用一个一维6抽头FIR滤波器生成的,该滤波器设计用于减少导致插值和运动补偿预测恶化的混叠成分[8]。通过平均整像素和半像素位置的亮度信号,生成四分之一像素位置的图像信号。所有分数像素位置的色度信号是通过平均获得的。
与之前的视频编码标准相比,H.264/AVC将传统的B帧概念扩展为通用的B Slice概念。在传统概念中,B帧使用过去的图像和未来的图像作为参考进行编码。预测是通过前向和后向预测信号的线性组合获得的。在早期标准中,这种线性组合只是两个预测信号的平均值,而H.264/AVC允许任意权重。在这个通用概念中,预测信号的线性组合不受时间方向的限制。例如,可以使用两个前向预测信号的线性组合(见图9)。此外,使用H.264/AVC,可以将包含B Slice的图像用作进一步预测的参考图像,这是在任何早期标准中都不可能实现的。关于这一通用B Slice概念的详细信息,也称为多假设运动补偿预测,可以在文献[10]、[11]、[12]中找到。
3.3 变换编码
类似于早期标准,变换编码用于编码预测误差信号。变换的任务是减少预测误差信号的空间冗余。为了进行变换编码,早期标准如MPEG-1和MPEG-2都应用了8×8大小的二维离散余弦变换(DCT)[13]。而在H.264/AVC中,应用了不同的整数变换,这些变换的大小主要是4×4,特殊情况为2×2。4×4的小块大小(而不是8×8)使编码器能够更好地适应运动物体的边界,使变换块大小与运动补偿的最小块大小匹配,并且总体上更好地适应局部预测误差信号。
使用了三种不同类型的变换。第一种类型应用于亮度组件Y的所有预测误差块的所有样本,以及色度组件Cb和Cr的所有块,无论使用的是运动补偿预测还是帧内预测。这种变换的大小为4×4。其变换矩阵H1如图10所示。
如果宏块使用INTRA_16×16类型进行预测,则除了第一种变换之外,还会应用第二种变换,即使用矩阵H2的哈达玛变换(见图10)。这种变换将已经变换过的亮度信号块的所有16个DC系数进行变换。这种变换的大小也是4×4。
第三种变换也是一种哈达玛变换,但其大小为2×2。它用于变换每个色度组件的4个DC系数。其变换矩阵H3如图10所示。
所有系数的传输顺序如图11所示。如果宏块使用帧内预测类型INTRA_16×16,首先传输标记为“−1”的块。这个块包含亮度分量所有块的DC系数。之后,传输标记为“0”到“25”的所有块,其中“0”到“15”的块包含亮度分量所有块的AC系数。最后,块“16”和“17”包含色度分量的DC系数,而块“18”到“25”包含色度分量的AC系数。
与DCT相比,所有应用的整数变换在变换矩阵中仅包含从−2到2的整数(见图10)。这允许使用仅包含低复杂度移位、加法和减法操作的16位算术计算变换和逆变换。在哈达玛变换的情况下,只需要加法和减法操作。此外,由于仅使用整数运算,逆变换的不匹配问题被完全避免,而在早期标准中,这些问题曾引起麻烦。
所有系数都通过标量量化器进行量化。量化步长由一个称为量化参数QP的参数选择,支持52个不同的量化参数。QP每增加6,步长翻倍。QP每增加1,所需的数据率大约增加12.5%。变换的详细解释见文献[15]。
3.4 熵编码方案
H.264/AVC 规定了两种替代的熵编码方法:一种是基于上下文自适应切换的可变长度码集的低复杂度技术,称为CAVLC(Context-Adaptive Variable Length Coding),另一种是计算复杂度更高的基于上下文的自适应二进制算术编码(CABAC)。这两种方法在编码效率方面相比早期视频编码标准中常用的统计编码技术都有显著改进。在早期方法中,为每个语法元素或一组语法元素使用了专门设计但固定的可变长度码(VLC),假设这些语法元素的概率分布与其代表的分布接近匹配。无论如何,都隐含地假设底层统计特性是平稳的,但在实际中这种情况很少见。特别是在运动补偿预测编码器中的残差数据表现出高度非平稳的统计行为,这取决于视频内容、编码条件和预测模型的准确性。通过在其熵编码框架中引入上下文建模,H.264/AVC 的这两种方法提供了对底层源的高度适应性,尽管在复杂度和压缩率之间存在不同的权衡。
CAVLC 是H.264/AVC的基本熵编码方法。其基本编码工具包括一个结构化的Exp-Golomb码的单个VLC,通过个别定制的映射应用于所有语法元素,除了与量化变换系数相关的元素。对于后者,应用了一种更复杂的编码方案。如图12所示的例子,给定的变换系数块首先根据预定义的扫描模式映射到一维数组。通常,在量化后,一个块中只有少数几个显著的(即非零)系数,并且在扫描末尾观察到幅度为1的系数(称为Tail 1,T1)的频繁出现。因此,作为前言,首先传输非零系数的数量和T1的数量,使用一个组合码字,根据邻近块的显著电平数量选择四个VLC表中的一个。然后,在第二步中,通过反向扫描系数列表来编码显著系数的符号和电平值。通过这种方式,每个单独电平值的VLC编码基于先前编码的电平值,从六个VLC表中选择。最后,通过传输每个块中最后一个非零电平之前的零的总数来指示零量化系数,并且对于每个显著电平,还传输相应的游程,即连续前导零的数量。通过监控每个编码阶段的最大可能零数,选择适合的VLC来编码每个游程值。在CAVLC熵编码模式中共使用了32种不同的VLC,然而,其中一些VLC的结构使得可以在不依赖代码表存储的情况下简单地在线计算任何码字。对于典型的编码条件和测试材料,与基于单个Exp-Golomb码的传统游程编码方案相比,CAVLC可以获得2–7%的比特率降低。
为了显著提高编码效率,CABAC作为H.264/AVC的另一种熵编码模式是首选方法(见图13)。如图13所示,CABAC的设计基于关键元素:二值化、上下文建模和二进制算术编码。二值化通过将非二进制语法元素唯一映射到一系列比特(称为二进制字符串)来实现高效的二进制算术编码。二进制字符串中的每个元素可以采用常规编码模式或旁路模式进行处理。后者适用于选定的二进制位,如符号信息或较低显著性的二进制位,通过简化编码引擎旁路来加速整个编码(和解码)过程。常规编码模式提供了实际的编码增益,其中二进制位可以进行上下文建模,然后进行算术编码。作为一个设计决策,通常只使用先前编码的二进制位为语法元素的最可能二进制位提供上下文模型。此外,所有常规编码的二进制位都通过估计其实际概率分布来进行调整。概率估计和实际的二进制算术编码采用无乘法的方法,这使得硬件和软件中的高效实现成为可能。需要注意的是,对于变换系数的编码,CABAC应用于特别设计的语法元素,如图12所示的例子。通常,CABAC相比CAVLC可以提供5–15%的比特率降低。关于CABAC的更多细节可以在文献[16]中找到。
3.5 自适应去块滤波器
H.264/AVC架构中的基于块的结构,包括4×4变换和基于块的运动补偿,可能是严重块效应的来源。研究表明,对块边缘进行滤波是一种强大的工具,可以减少这些伪影的可见性。原则上,去块滤波可以作为后滤波进行,仅影响要显示的图像。然而,当滤波过程在编码环中进行时,可以实现更高的视觉质量,因为此时用于运动补偿的所有相关过去参考帧都是重建帧的滤波版本。另一个原因是在H.264/AVC中将去块滤波作为强制性的环内工具,以确保解码器向用户提供的质量与生产者所期望的质量一致,而不是将这一基本图像增强工具的使用留给解码器制造商的随意决定。
H.264/AVC标准中描述的滤波器具有高度自适应性。多个参数和阈值以及图像本身的局部特性控制着滤波过程的强度。所有涉及的阈值都依赖于量化器,因为当量化变得粗糙时,块效应总是会变得更加严重。
H.264/MPEG-4 AVC的去块滤波在三个层面上是自适应的:
- 在slice层面,全局滤波强度可以根据视频序列的个体特性进行调整。
- 在块边缘层面,滤波强度取决于帧间/帧内预测决策、运动差异以及参与的两个块中是否存在编码残差。根据这些变量计算出一个滤波强度参数,该参数的取值范围从0到4,对应从不滤波到非常强的滤波模式。
- 在样本层面,区分图像中的真实边缘和由变换系数量化产生的边缘至关重要。真实边缘应尽可能保持不被滤波。为了区分这两种情况,分析每个边缘上的样本值。如图14所示,将两个相邻4×4块内的样本值表示为p3, p2, p1, p0 | q0, q1, q2, q3,实际边界位于p0和q0之间。只有当p0和q0的绝对差值低于某个阈值α时,才会对这两个像素进行滤波。同时,边缘两侧的绝对像素差值(|p1 − p0| 和 |q1 − q0|)必须低于另一个阈值β,这个阈值远小于α。为了能够滤波p1(q1),p0和p2(q0和q2)之间的绝对差值也必须小于β。α和β对量化器的依赖性将滤波强度与滤波前重建图像的整体质量联系起来。对于较小的量化值,这两个阈值都变为零,滤波实际上被完全关闭。
在H.264/AVC中,帧内编码在编码几乎均匀的图像区域时倾向于使用INTRA_16×16预测模式。这会导致宏块边界处出现小幅度的块效应,这些效应在这些情况下被感知为突然的台阶。为了补偿由此产生的拼接伪影,在两个宏块之间具有平滑图像内容的边界上应用非常强的低通滤波。这种特殊滤波器还涉及像素p3和q3。
一般来说,去块滤波在中等质量下可以节省约6–9%的比特率。更显著的是主观图像质量的提升。关于H.264/AVC去块滤波方案的更简洁描述可以在文献[17]中找到。
3.6 错误鲁棒性和网络友好性
为了在不同环境中高效传输,将编码后的视频无缝且容易地集成到所有现有的和未来的协议和网络架构中非常重要。因此,VCL(视频编码层)和NAL(网络抽象层)都是H.264/AVC标准的一部分(见图2)。VCL规定了编码视频信号的有效表示。NAL定义了视频编解码器本身与外部世界的接口。它在NAL单元上操作,支持大多数现有网络的包交换方法。除了NAL概念外,VCL本身还包括若干提供网络友好性和错误鲁棒性的特性,这些特性对于实时服务(如流媒体、多播和会议应用)尤为重要,因为这些应用涉及在线传输和解码。H.264/AVC假设参考解码器(HRD)[18]通过对编码的NAL单元流施加约束,引入了多漏桶模型,从而实现成本效益的解码器实现。
像互联网或无线链路这样的有损和可变比特率(VBR)通道需要通道自适应的流媒体或多播技术。除了其他技术[19],通道自适应包依赖控制[20]和包调度[21]允许在传输预编码视频流时对这些通道作出反应。H.264/AVC通过多种手段支持这些技术,具体包括:非参考帧的帧丢弃,这导致了众所周知的时间可伸缩性;结合广义B图像的多参考帧概念,允许利用帧依赖关系的巨大灵活性,以实现编码视频的时间可伸缩性和速率整形;以及在不同比特率编码的比特流之间切换的可能性。这种技术称为版本切换。它可以在即时解码刷新(IDR)帧处应用,或者更高效地通过使用切换图像来实现,即使使用不同的参考帧也能实现帧的相同重建。切换预测(SP)图像高效地利用了运动补偿预测,而切换帧内(SI)图像可以精确重建SP图像。使用SI和SP图像在两个比特流之间切换的过程如图15和图16所示。切换图像也可以用于错误恢复目的以及其他功能,详细信息见文献[22]。
对于延迟要求宽松的应用,如下载播放、流媒体和广播/多播,通常可以通过应用强大的前向纠错和重传协议来避免残留错误。然而,对话型应用的低延迟要求带来了额外的挑战,因为由于拥塞和链路层的不完善,传输错误通常是无法避免的。因此,这些视频应用需要具备错误恢复功能。H.264/AVC标准化过程中认识到了这一点,并通过采用一套IP传输的通用测试条件[23]来应对这一问题。规定了基准视频序列、适当的比特率和评估标准。接下来,我们简要介绍标准中包含的不同错误恢复功能,更多详细信息请参见[24]和[7]。展示时附带了图18,该图显示了代表性互联网测试条件的结果,特别是QCIF序列Foreman,编码时间为10秒,帧率为7.5 fps,仅使用时间向后引用的运动补偿。包括40字节IP/UDP/RTP报头在内的总比特率正好为64 kbit/s。性能指标选择了平均亮度峰值信噪比(PSNR),并通过每次实验传输至少10000个数据包以及应用简单的丢包模拟和互联网错误模式[23](互联网错误模式是从实际测量中捕获的,导致的丢包率约为3%、5%、10%和20%。这些错误概率在图18中标记为包错误率。请注意,5%的错误文件比其他文件更具突发性,导致了一些意外的结果。)来获得足够的统计数据。
尽管通常认为更高的压缩效率会降低错误恢复能力,但如果适当应用,情况则相反。更高的压缩允许使用额外的比特率进行前向错误校正,从而在总比特率恒定的情况下减少高压缩数据的丢失概率。以下讨论的所有其他错误恢复工具通常会在相同质量下增加数据率,因此,它们的应用应始终谨慎考虑,以免对压缩效率产生不利影响,尤其是在较低层错误保护适用的情况下。这在图18的包错误率为0时可以看出来。slice结构编码减少了包丢失概率和包丢失引起的视觉退化,尤其是在与先进的解码器错误隐藏方法[25]结合使用时。slice是一个slice组内的一系列宏块,为单帧视频数据提供了空间上独立的再同步点。slice边界之间不进行帧内预测。然而,帧内预测的丢失和减小slice带来的额外开销会不利地影响编码性能。特别是对于无线传输,包大小的仔细选择是必要的[7]。
作为一种更高级的功能,灵活宏块排序(FMO)允许指定宏块分配图,定义宏块到slice组的映射,其中slice组本身可能包含多个slice。一个例子如图17所示。
因此,宏块可以以灵活且高效的方式脱离光栅扫描顺序进行传输。特定的宏块分配图使得诸如slice交织、使用棋盘状图案的分散宏块分配、一个或多个前景slice组和一个剩余背景slice组、或图片内的子画面等特性的高效应用成为可能,以支持例如孤立区域[26]。图18显示,与放弃错误恢复特性相比,使用棋盘状图案的FMO在错误率增加时性能有所提升。
任意slice排序(ASO)允许图片内slice的解码顺序不必遵循该图片的NAL单元流中第一个宏块的地址单调递增的约束。这允许,例如,在NAL单元乱序交付的情况下减少解码延迟。
数据分区允许为编码信息的传输生成最多三个分区。H.264/AVC不仅提供两个分区,一个用于头部和运动信息,另一个用于编码变换系数,还可以通过将第二个分区分为帧内和帧间信息来生成三个分区。这允许为通常更重要的帧内信息分配更高的优先级。因此,它可以减少由于包丢失导致的视觉伪影,特别是在网络提供优先级或不等错误保护的情况下。
如果尽管采用了所有这些技术,仍然无法避免包丢失和时空错误传播,那么只有当图像区域以帧内模式编码时,即不参考之前编码的帧,才能实现快速恢复。H.264/AVC允许对无法高效预测的区域中的单个宏块进行编码。此功能也可以通过传输一定数量的帧内编码宏块来预期传输错误,从而限制错误传播。帧内编码宏块的选择可以随机进行、按照某些更新模式进行,或者优选地以通道自适应率失真优化方式[7]、[27]进行。图18显示,引入帧内编码宏块显著提高了在较高错误率下的性能,并且可以与上述任何错误恢复特性结合使用。因此,通道自适应帧内更新在整个错误率范围内可以提供比纯随机帧内更新更好的结果。
冗余编码slice是冗余图像的一部分,而冗余图像是图像的编码表示,如果对应的主编码图像正确解码,则不会在解码过程中使用。利用冗余编码图像特性的应用和编码技术示例包括视频冗余编码[28]和多播流中“关键图像”的保护[29]。
在双向会话应用中,通常编码器会知道解码器经历的NAL单元丢失情况,通常会有很小的延迟。这种少量的信息可以从解码器传递到编码器。虽然在低延迟环境中重传不可行,但这些信息在编码器端仍然有助于限制错误传播[30]。H.264/AVC中多参考帧概念提供的灵活性允许以直接的方式纳入所谓的NEWPRED方法[31],这些方法旨在解决错误传播问题。对于最成功的应用,可以在第4节讨论的率失真优化编码控制中集成参考帧的选择和帧内更新,不仅考虑视频统计信息,还考虑所有可用的信道信息[7]。图18展示了在应用五个参考帧和两帧反馈延迟的情况下,特别是对于中等到较高的错误率,取得了优异的结果。为了在低错误率下也提高性能,可以考虑根据[27]结合信道自适应帧内更新和反馈,尽管这会增加编码复杂度。
4.码率受限的编码器控制
由于标准仅定义了比特流语法和可能的编码工具,编码效率取决于编码器的编码策略,而这一部分不在标准范围内(见图1)。图19显示了不同编码策略下的原理率失真工作点。如果仅考虑最小化失真来决定编码工具,则实现的失真较小,但所需的比特率非常高。反之,如果仅考虑比特率,则实现的比特率较低,但失真较高。通常,这两种工作点都不是理想的。理想的工作点是同时最小化失真和比特率。这可以通过使用拉格朗日优化技术来实现,例如在[32]中有相关描述。
对于使用H.264/AVC标准编码视频序列,关于宏块模式选择和位移矢量估计的拉格朗日优化技术在[10]、[33]和[34]中有所提出。
每个宏块
S
k
S_k
Sk的宏块模式可以通过最小化函数从所有可能的模式
I
k
I_k
Ik中高效选择。
这里,失真
D
R
E
C
D_{REC}
DREC通过原始信号
s
s
s与其对应的重建信号
s
′
s^{'}
s′之间的平方差之和(SSD)来衡量。SSD 可以通过以下公式计算:
所需比特率
R
R
E
C
R_{REC}
RREC是使用熵编码器编码该块所需的比特率。QP 是用于调整量化步长的量化参数,其范围从0到51。
运动矢量可以通过最小化以下函数来高效估计:
其中,
这里,
R
M
o
t
i
o
n
R_{Motion}
RMotion是传输运动信息
d
→
\stackrel{\rightarrow}{d}
d→所需的比特率,运动信息包括位移矢量分量
d
x
d_x
dx和
d
y
d_y
dy以及相应的参考帧编号
d
t
d_t
dt。如下所示的拉格朗日参数在[10]中被证明可以取得良好的结果:
5. H.264/AVC 的配置文件和级别
H.264/AVC 被开发以满足广泛的应用、比特率、分辨率、质量和服务需求;换句话说,H.264/AVC 力求尽可能通用。然而,不同的应用通常在功能(例如,错误恢复、压缩效率和延迟)以及复杂性(在这种情况下,主要是解码复杂性,因为编码未标准化)方面有不同的要求。
为了在限制复杂性的同时最大化互操作性,以实现标准的最大部署,H.264/AVC 规范定义了配置文件和级别。配置文件被定义为整个比特流语法的一个子集,或者说是一组编码工具的子集。为了实现完整语法的一个子集,比特流中包含了标志、参数和其他语法元素,这些元素指示后续比特流中语法元素的存在或不存在。所有符合特定配置文件的解码器必须支持相应配置文件中的所有工具。
然而,在给定配置文件的语法限制范围内,解码器所需的能力仍存在很大差异,这取决于比特流中某些语法元素的取值,例如解码图像的大小。对于许多应用来说,目前既不实用也不经济去实现一个能够处理特定配置文件内所有假设用法的解码器。为了解决这个问题,为每个配置文件创建了第二个配置维度:级别。级别是指对比特流中语法元素值施加的一组约束。这些约束可能是对值的简单限制,或者它们可能采取值的算术组合形式的约束(例如,图像宽度乘以图像高度乘以每秒解码的图像数量)[1]。在H.264/AVC中,所有定义的配置文件使用相同的级别定义。然而,如果某个终端支持多个配置文件,则没有义务要求各种配置文件支持相同的级别。配置文件和级别的组合指定了所谓的符合点,这意味着具有相似功能需求的应用程序的互操作点。
总之,配置文件和级别共同规定了比特流的限制,从而设定了解码能力的最低要求,使得可以实现针对不同应用领域的具有不同有限复杂度的解码器。编码器不需要使用任何特定的工具集;它们只需要生成符合相关配置文件和级别组合的比特流。
为了应对H.264/AVC考虑的广泛应用,定义了三个配置文件(见图20):
- 基线配置文件(Baseline Profile)——通常被认为是最简单的配置文件,包括所有H.264/AVC工具,但不包括以下工具:B帧、加权预测、场(隔行)编码、帧/宏块自适应切换(MB-AFF)、CABAC、SP/SI Slice和Slice数据分区。该配置文件通常针对低复杂度和低延迟要求的应用。
- 主配置文件(Main Profile)——与基线配置文件一起支持一组核心工具(见图20);然而,与基线配置文件相比,主配置文件排除了FMO、ASO和冗余图像特性,但包括B帧、加权预测、场(隔行)编码、帧/宏块自适应切换(MB-AFF)和CABAC。该配置文件通常以更高的复杂度(主要由于B帧和CABAC)和延迟为代价,提供最佳质量。
- 扩展配置文件(Extended Profile)——这是基线配置文件的超集,支持规范中的所有工具,但不包括CABAC。SP/SI slice和slice数据分区工具仅包含在该配置文件中。
从图20可以看出,有一组工具被所有配置文件支持,但这些配置文件的层次能力被简化为扩展配置文件是基线配置文件的超集。这意味着,例如,只有某些符合基线配置文件的比特流才能被符合主配置文件的解码器解码。
尽管很难在配置文件和应用之间建立强关系(在这方面显然没有任何规范性规定),但可以说,会话服务通常使用基线配置文件,娱乐服务使用主配置文件,而流媒体服务在无线或有线环境中分别使用基线或扩展配置文件。然而,可能会采用不同的方法,并且随着时间的推移,随着更高复杂度变得更为可接受,这种情况可能会发生变化。
在H.264/AVC中,每个配置文件都指定了15个级别。每个级别规定了比特流的上限或解码器能力的下限,例如,图像大小(从QCIF到超过4k×2k)、解码处理率(从1485到983040宏块/秒)、多图像缓冲区的内存大小、视频比特率(从64 kbit/s到240 Mbit/s)以及运动矢量范围(从[-64, +63.75]到[-512, +511.75])。有关H.264/AVC配置文件和级别的更详细信息,请参阅[1]的附录A。
6.与先前标准的比较
在本节中,将H.264/AVC与其他视频编码标准在编码效率(第6.1节)和硬件复杂度(第6.2节)方面进行比较。
6.1 编码效率
在[10]中,对不同视频编码标准在视频流、视频会议和娱乐质量应用中的编码效率进行了详细比较。所有编码器都使用率失真优化的率受限编码控制进行了优化[10]、[33]、[34]。对于视频流和视频会议应用,我们使用了通用中间格式(CIF,352 × 288 图像元素,逐行扫描)和四分之一通用中间格式(QCIF,176 × 144 图像元素,逐行扫描)的测试视频序列。对于娱乐质量应用,使用了ITU-R 601(720 × 576 图像元素,隔行扫描)和高清晰度电视(HDTV,1280 × 720 图像元素,逐行扫描)的序列。编码效率通过在恒定峰值信噪比(PSNR)下的平均比特率节省来衡量。因此,考虑了多个测试序列和不同质量下的所需比特率。
对于视频流应用,考虑了H.264/AVC MP(主配置文件)、MPEG-4 Visual ASP(高级简单配置文件)、H.263 HLP(高延迟配置文件)和MPEG-2 Video ML@MP(主配置文件的主级别)。图21显示了单个测试序列Tempete在15 Hz编码时的亮度分量PSNR与平均比特率的关系,表1列出了多种测试序列和比特率下的平均比特率节省。从表1可以看出,H.264/AVC优于所有其他考虑的编码器。例如,与MPEG-2 Video相比,H.264/AVC MP的平均比特率节省约为63%,与MPEG-4 Visual ASP相比,平均比特率节省约为37%。
对于视频会议应用,考虑了H.264/AVC BP(基线配置文件)、MPEG-4 Visual SP(简单配置文件)、H.263 基线配置文件和H.263 CHC(会话高压缩配置文件)。图22显示了单个测试序列Paris在15 Hz编码时的亮度PSNR与平均比特率的关系,表2列出了多种测试序列和比特率下的平均比特率节省。与视频流应用类似,H.264/AVC优于所有其他考虑的编码器。H.264/AVC BP与H.263基线配置文件相比,平均比特率节省约为40%,与H.263 CHC相比,平均比特率节省约为27%。
对于娱乐质量应用,H.264/AVC相比MPEG-2 Video ML@MP和HL@MP的平均比特率节省约为45% [10]。编码效率的这一增益部分归因于H.264/AVC能够大量去除电影制作过程中产生的胶片颗粒噪声。然而,由于这种带有噪声的颗粒纹理通常被认为是可取的,因此H.264/AVC编码视频与MPEG-2编码视频在感知质量上的差异可能不像基于PSNR的比较所显示的那样明显,尤其是在高清晰度DVD或数字影院等高质量、高分辨率的应用中。
在某些应用中,如专业电影制作,可能需要对每张单独的图像进行随机访问。作为新的静态图像编码标准JPEG2000的扩展,Motion-JPEG2000提供了这一功能以及一些有用的可伸缩性特性。当仅限于IDR帧时,H.264/AVC也能满足这种随机访问能力的需求。图23显示了ITU-R 601测试序列Canoe在仅帧内模式编码时(即,整个序列的每个场都以帧内模式编码)的亮度分量PSNR与平均比特率的关系。有趣的是,H.264/AVC MP在该特定测试案例中的测得率失真性能优于当前最先进的静态图像压缩标准JPEG2000。其他测试案例也在[38]中进行了研究,得出的一般观察结果是,对于高达1280 × 720像素的HDTV信号,H.264/AVC MP的纯帧内编码性能与Motion-JPEG2000相当或更好。
6.2 硬件复杂度
评估新视频编码标准的复杂度并非易事:其实施复杂度很大程度上取决于所映射平台的特性(例如,DSP处理器、FPGA、ASIC)。在本节中,选择数据传输特性作为通用的、与平台无关的指标来表达实施复杂度。这种方法的动机在于多媒体应用的数据主导性[39]–[44]。
H.264/AVC规范的规模和复杂性,以及不同功能之间的错综复杂的依赖关系,使得仅通过纸质规范进行复杂度评估变得不可行。因此,所呈现的复杂度分析是在JVT生成的可执行C代码上进行的。由于这一规范是协作努力的结果,代码不可避免地在优化和平台依赖性方面具有不同的特性。尽管如此,我们的经验表明,使用自动分析工具(如[45])在类似的规范(例如MPEG-4)上获取详细的传输特性数据时,可以获得有意义的相对复杂度数据(这也是[46]的结论)。报告的复杂度评估实验使用了H.264/AVC JM2.1代码。更新版本的可执行H.264/AVC规范已发布,这些版本还包括更新的工具定义,实现了降低复杂度的目标。
复杂度评估中使用的测试序列包括:Mother & Daughter 30 Hz QCIF,Foreman 25 Hz QCIF和CIF,以及Mobile & Calendar 15 Hz CIF(比特率从简单序列的40 Kbit/s到复杂序列的2 Mbit/s不等)。假设了一个固定的量化参数设置。
接下来的两个小节将重点介绍对H.264/AVC复杂度的主要贡献。随后将提出一些一般性的考虑。
6.2.1 主要H.264/AVC编码工具的复杂度分析
- 可变块大小:使用可变块大小会影响访问频率,每增加一种模式,复杂度增加超过2.5%。使用此工具,典型的比特率减少在4%到20%之间(在相同质量下),然而,复杂度随使用的模式数量线性增加,而相应的压缩增益趋于饱和。
- Hadamard变换:使用Hadamard编码会导致访问频率增加约20%,但对所考虑的测试序列的质量与比特率影响不大。
- RD-Lagrangian优化:此工具导致数据传输增加约120%,并改进了PSNR(最多0.35 dB)和比特率(最多9%的比特节省)。使用RD技术进行运动估计和编码模式决策的性能与成本权衡内在地取决于其他工具的使用。例如,当应用于只有一个参考帧和仅16×16块大小的基本配置时,复杂度增加不到40%。
- B帧:B帧对访问频率的影响从-16%到+12%不等,具体取决于测试案例,并且可以将比特率降低最多10%。
- CABAC:与使用单一可逆VLC表的方法相比,CABAC导致访问频率增加25%到30%。使用CABAC可以将比特率降低最多16%。
- 位移矢量分辨率:编码器可以选择只在1/2像素位置搜索运动矢量,而不是1/4像素位置。这会导致访问频率和处理时间减少约10%。然而,使用1/4像素运动矢量可以将编码效率提高最多30%,除非在非常低的比特率下。
- 搜索范围:增加参考帧数量和搜索范围会导致访问频率显著增加,最高可达约60倍(见表3),但对PSNR和比特率性能的影响很小。
- 多参考帧:采用多参考帧会根据线性模型增加访问频率:每增加一帧,复杂度增加25%。在低和中等比特率下,比特率的增益微乎其微(小于2%),但在高比特率序列中可以实现更显著的节省(最多14%)。
- 去块滤波器:强制使用去块滤波器对编码器复杂度没有可测量的影响。然而,滤波器显著提高了主观图像质量。
对于编码器而言,主要瓶颈是多参考帧和大搜索范围的结合。在1.7 GHz的Pentium IV平台上使用Windows 2000进行的速度测量与上述结论一致(该平台也用于解码器的速度测量)。
PS:
(1) 测试序列为Mother & Daughter 30 Hz QCIF,Foreman 25 Hz QCIF和CIF,以及Mobile & Calendar 15 Hz CIF
(2) 测试码率从40 Kbit/s到复杂序列的2 Mbit/s不等
(3) 使用可变化大小,降低的码率范围为4%~20%;每增加一种模式,复杂度增加2.5%
(4) 使用Hadamard变换,复杂度增加20%,对当前序列没有码率的降低效果
(5) 使用RD拉格朗日优化,至多增加0.35dB和9%的比特率节省,复杂度的增加最少不到40%
(6) 使用B帧,最多带来12%的复杂度提升,比特率最多降低10%
(7) 使用CABAC,较之于CAVLC会增加25%~30%复杂度,最多降低16%的码率
(8) 使用1/4像素,可以将编码效率提升30%
(9) 使用更广的搜索范围,不会显著增加性能
(10) 使用多参考帧,在中低比特率下,比特率的增益很小,但在高比特率序列中可以实现更加显著的比特率节省
(11) 使用去块滤波,可以显著提高图像的主观质量
6.2.2 主要H.264/AVC解码工具的复杂度分析
- CABAC:与使用单一可逆VLC表的方法相比,CABAC导致的访问频率增加最多12%。比特率越高,增加幅度越大。
- RD-Lagrangian优化:编码器使用Lagrangian成本函数导致解码器在中低比特率下的平均复杂度增加5%,而高比特率视频不受影响(即,在这种情况下,编码选择导致解码器侧的复杂度增加)。
- B帧:B帧对数据传输复杂度的影响因测试案例而异,从11%到29%不等。使用B帧对解码时间有重要影响:引入第一个B帧需要额外50%的成本用于非常低比特率的视频,20%到35%的成本用于中高比特率的视频。第二个B帧所需的额外时间则低得多(几个百分点)。
- Hadamard变换:编码器使用Hadamard变换对解码器的内存访问影响可以忽略不计,但会增加最多5%的解码时间。
- 去块滤波器:使用强制的去块滤波器使解码器的访问频率增加6%。
- 位移矢量分辨率:如果编码器仅发送指向1/2像素位置的矢量,访问频率和解码时间将减少约15%。
PS:
(1) 使用CABAC,复杂度增加12%
(2) 使用RD拉格朗日优化,中低比特率下,平均复杂度增加5%,高比特率不受影响
(3) 使用B帧,复杂度增加范围为11%~29%
(4) 使用Hadamard变换,会增加最多5%的复杂度
(5) 使用去块滤波器,会增加6%的复杂度
(6) 运动矢量,1/2像素的MV比1/4像素的复杂度减少15%
6.2.3 其他考虑
相对而言,从MPEG-4 Part 2(简单配置文件)到H.264/AVC(主配置文件),编码器复杂度增加了超过一个数量级,而解码器复杂度增加了约两倍。H.264/AVC编码器/解码器的复杂度比在基本配置中约为10,而对于复杂配置,这一比例可以增长到两个数量级,详见[47]。
我们的实验表明,当结合使用新的编码特性时,相关的实现复杂度会累积,而整体的压缩效率则趋于饱和。合理使用H.264/AVC工具可以达到与同时使用所有工具大致相同的压缩性能,但实现复杂度显著降低(编码器的复杂度降低6.5倍,解码器的复杂度降低最多1.5倍)。这些高效的使用模式反映在H.264/AVC配置文件中工具和参数设置的选择上(见第5节)。关于在H.264/AVC标准化过程中进行的复杂度分析的更多信息,可以在[48]、[49]和[50]中找到。
PS:
(1) 当多个工具同时应用时,其复杂度呈线性积累,但压缩效率则会呈现指数函数形式,处于饱和状态
(2) 如果能将H264中的工具合理的配置,可以实现与同时使用所有工具相同的效果,但是复杂度会显著降低。编码器复杂度至多降低6.5倍,解码复杂度至多降低1.5倍
7. H.264/AVC 技术的许可
将技术引入国际标准的公司和大学通常会通过专利来保护他们的知识产权。当标准定义过程的参与者提议将专利技术纳入标准时,他们承诺以公平、合理和非歧视的条款(即所谓的RAND条件)许可其技术的使用。必要专利描述了必须在符合标准的解码器中实现的技术。使用专利技术需要用户从相应的所有者处获得许可。鉴于任何现代视频编码标准中都使用了许多专利,多家公司将他们的专利汇集到一个池中,以便用户更容易获得H.264/AVC技术的许可。目前有两个专利池:一个是MPEG LA组织的,另一个是由Via Licensing组织的。由于这两个专利池覆盖的专利并不完全相同,原则上H.264/AVC技术的用户需要从两个专利池获得许可。不幸的是,这些专利池不能保证涵盖H.264技术的全部内容,因为专利所有者参与专利池是自愿的。
MPEG LA LLC 是一个组织,它将拥有必要专利的所有者如哥伦比亚大学、韩国电子通信研究院(ETRI)、法国电信、富士通、LG电子、松下、三菱、微软、摩托罗拉、诺基亚、飞利浦、罗伯特博世有限公司、三星、夏普、索尼、东芝和日本胜利公司(JVC)汇集到了一个专利池中。VIA Licensing Corporation 是杜比实验室的子公司,它从苹果计算机、杜比实验室、FastVDO、弗劳恩霍夫协会、IBM、LSI Logic、微软、摩托罗拉、宝利通和RealNetworks等公司获得了必要的H.264/AVC技术许可。这两个专利池都可以用于H.264/AVC解码器的商业用途。不幸的是,许可条款有所不同。
(1) MPEG LA 许可条款:
在2004年12月的宽限期结束后,编码器或解码器的最终产品制造商每年前100,000个单位免费,之后每单位需支付0.20美元的费用。除了实际的软硬件费用外,从2006年1月开始,某些公司还需支付参与费。按次付费、下载或视频点播服务提供商需支付每项内容销售价格的2%或0.02美元中的较低者。这适用于所有传输媒介,如电缆、卫星、互联网、移动和空中广播。订阅服务如果有100,000至1,000,000名H.264/AVC视频订阅用户,每年需支付每位订阅用户0.075至0.25美元的费用。空中免费广播服务运营商每年每台发射机需支付10,000美元。免费互联网广播在2010年12月之前免收任何费用。
(2) VIA Licensing 许可条款:
在2004年12月的宽限期结束后,编码器或解码器的最终产品制造商需支付每单位0.25美元的费用。如果内容是免费提供给用户的,则无需支付参与费或复制费。对于永久销售的内容,每部短于30分钟的作品需支付0.005美元,长于90分钟的作品需支付0.025美元。对于临时销售的内容,复制费为0.0025美元。只要一家公司的设备分销数量少于50,000台,并且从与设备和内容分发相关的活动中获得的收入少于500,000美元,这个专利池就不收取任何费用。看来,像视频电话这样的交互式通信服务只需支付单位费用,而无需支付参与费。虽然之前的标准如MPEG-2 Video也需要为每个编码器和解码器支付许可费,但为使用H.264/AVC设立的参与费要求潜在的商业用户付出额外的努力。
免责声明:未经授权代表书面确认其内容,不得依赖本节关于H.264/AVC技术许可的信息。
8. 总结
这一新的国际视频编码标准由ISO/IEC的MPEG小组和ITU-T的VCEG小组联合开发并批准。与之前的视频编码标准相比,H.264/AVC提供了更高的编码效率和显著的灵活性改进,适用于广泛的网络。尽管H.264/AVC仍然使用基于块的运动补偿概念,但它提供了一些重要的变化:
- 增强的运动补偿能力:使用高精度和多参考帧
- 使用整数DCT类似的变换:而不是传统的DCT
- 增强的自适应熵编码:包括算术编码
- 自适应环内去块滤波器
H.264/AVC的编码工具在优化模式下使用时,相比之前的视频编码标准如MPEG-4和MPEG-2,在广泛比特率和分辨率范围内可以节省大约50%的比特率。然而,这些节省是以增加复杂度为代价的。H.264/AVC的解码器复杂度大约是MPEG-4 Visual简单配置文件解码器的两倍,而编码器复杂度大约是相应MPEG-4 Visual简单配置文件编码器的十倍。适合娱乐应用的H.264/AVC主配置文件解码器的复杂度大约是MPEG-2的四倍。编码器的复杂度在很大程度上取决于运动估计算法以及速率受限编码控制算法。考虑到自MPEG-2推出以来VLSI电路性能的提升,今天的H.264/AVC在复杂度上已经低于1994年的MPEG-2。目前,商业公司可以从两个许可机构获得实施H.264/AVC解码器所需的技术许可,从而简化了基于H.264/AVC技术构建产品的过程
PS:
(1) QP每增加6,步长翻倍。QP每增加1,所需的数据率大约增加12.5%
(2) 对于典型的编码条件和测试材料,与基于单个Exp-Golomb码的传统游程编码方案相比,CAVLC可以获得2–7%的比特率降低;通常,CABAC相比CAVLC可以提供5–15%的比特率降低
(3) 一般来说,去块滤波在中等质量下可以节省约6–9%的比特率
(4) H.264/AVC BP与H.263基线配置文件相比,平均比特率节省约为40%,与H.263 CHC相比,平均比特率节省约为27%
附录中与性能分析相关的文章:
[22] M. Karczewicz and R. Kurçeren, “The SP and SI frames design for
H.264/AVC,” IEEE Transactions on Circuits and Systems, vol. 13, no. 7, pp.
637–644, July 2003
[47] S. Saponara, C. Blanch, K. Denolf, and J. Bormans, “The JVT advanced
video coding standard: Complexity and performance analysis on a tool-bytool basis,” Packet Video Workshop (PV’03), Nantes, France, April 2003.
[49] V. Lappalainen, A. Hallapuro, and T. Hamalainen, “Performance
analysis of low bit rate H.26L video encoder,” in Proc. IEEE ICASSP’01,
May 2001, pp. 1129–1132.
[50] M. Horowitz, A. Joch, F. Kossentini, and A. Hallapuro, “H.264/AVC
baseline profile decoder complexity analysis,” IEEE Tran. Circ. Sys. Video
Tech., vol. 13, no 7, pp. 715–727, 2003