标题：H.264++
简介

H.264是ITU-T的VCEG（视频编码专家组）和ISO/IEC的MPEG（活动图像编码专家组）的联合视频组（JVT：joint video team）开发的一个新的数字视频编码标准，它既是ITU-T的H.264，又是ISO/IEC的MPEG-4的第10 部分。1998年1月份开始草案征集，1999年9月，完成第一个草案，2001年5月制定了其测试模式TML-8，2002年6月的 JVT第5次会议通过了H.264的FCD板。2003年3月正式发布。H.264和以前的标准一样，也是DPCM加变换编码的混合编码模式。但它采用"回归基本"的简洁设计，不用众多的选项，获得比H.263++好得多的压缩性能；加强了对各种信道的适应能力，采用"网络友好"的结构和语法，有利于对误码和丢包的处理；应用目标范围较宽，以满足不同速率、不同解析度以及不同传输（存储）场合的需求；它的基本系统是开放的，使用无需版权。在技术上，H.264标准中有多个闪光之处，如统一的VLC符号编码，高精度、多模式的位移估计，基于4×4块的整数变换、分层的编码语法等。这些措施使得H.264算法具有很的高编码效率，在相同的重建图像质量下，能够比H.263节约50％左右的码率。H.264的码流结构网络适应性强，增加了差错恢复能力，能够很好地适应IP和无线网络的应用。
技术亮点
分层设计H.264的算法在概念上可以分为两层：视频编码层（VCL：Video Coding Layer）负责高效的视频内容表示，网络提取层（NAL：Network Abstraction Layer）负责以网络所要求的恰当的方式对数据进行打包和传送。在VCL和NAL之间定义了一个基于分组方式的接口，打包和相应的信令属于NAL的一部分。这样，高编码效率和网络友好性的任务分别由VCL和NAL来完成。VCL层包括基于块的运动补偿混合编码和一些新特性。与前面的视频编码标准一样，H.264没有把前处理和后处理等功能包括在草案中，这样可以增加标准的灵活性。NAL负责使用下层网络的分段格式来封装数据，包括组帧、逻辑信道的信令、定时信息的利用或序列结束信号等。例如，NAL支持视频在电路交换信道上的传输格式，支持视频在Internet上利用RTP/UDP/IP传输的格式。NAL包括自己的头部信息、段结构信息和实际载荷信息，即上层的VCL数据。（如果采用数据分割技术，数据可能由几个部分组成）。
高精度、多模式运动估计H.264支持1/4或1/8像素精度的运动矢量。在1/4像素精度时可使用6抽头滤波器来减少高频噪声，对于1/8像素精度的运动矢量，可使用更为复杂的8抽头的滤波器。在进行运动估计时，编码器还可选择“增强”内插滤波器来提高预测的效果。在H.264的运动预测中，一个宏块（MB）可以按图2被分为不同的子块，形成7种不同模式的块尺寸。这种多模式的灵活和细致的划分，更切合图像中实际运动物体的形状，大大提高了运动估计的精确程度。在这种方式下，在每个宏块中可以包含有1、2、4、8或16个运动矢量。在H.264中，允许编码器使用多于一帧的先前帧用于运动估计，这就是所谓的多帧参考技术。例如2帧或3帧刚刚编码好的参考帧，编码器将选择对每个目标宏块能给出更好的预测帧，并为每一宏块指示是哪一帧被用于预测。
整数变换H.264与先前的标准相似，对残差采用基于块的变换编码，但变换是整数操作而不是实数运算，其过程和DCT基本相似。这种方法的优点在于：在编码器中和解码器中允许精度相同的变换和反变换，便于使用简单的定点运算方式。也就是说，这里没有"反变换误差"。 变换的单位是4×4块，而不是以往常用的8×8块。由于用于变换块的尺寸缩小，运动物体的划分更精确，这样，不但变换计算量比较小，而且在运动物体边缘处的衔接误差也大为减小。为了使小尺寸块的变换方式对图像中较大面积的平滑区域不产生块之间的灰度差异，可对帧内宏块亮度数据的16个4×4块的DC系数（每个小块一个，共16个）进行第二次4×4块的变换，对色度数据的4个4×4块的DC系数（每个小块一个，共4个）进行2×2块的变换。
H.264为了提高码率控制的能力，量化步长的变化的幅度控制在12.5%左右，而不是以不变的增幅变化。变换系数幅度的归一化被放在反量化过程中处理以减少计算的复杂性。为了强调彩色的逼真性，对色度系数采用了较小量化步长。
统一的VLCH.264中熵编码有两种方法，一种是对所有的待编码的符号采用统一的VLC（UVLC ：Universal VLC），另一种是采用内容自适应的二进制算术编码（CABAC：Context-Adaptive Binary Arithmetic Coding）。CABAC是可选项，其编码性能比UVLC稍好，但计算复杂度也高。UVLC使用一个长度无限的码字集，设计结构非常有规则，用相同的码表可以对不同的对象进行编码。这种方法很容易产生一个码字，而解码器也很容易地识别码字的前缀，UVLC在发生比特错误时能快速获得重同步。
帧内预测在先前的H.26x系列和MPEG-x系列标准中，都是采用的帧间预测的方式。在H.264中，当编码Intra图像时可用帧内预测。对于每个4×4块（除了边缘块特别处置以外），每个像素都可用17个最接近的先前已编码的像素的不同加权和（有的权值可为0）来预测，即此像素所在块的左上角的17个像素。显然，这种帧内预测不是在时间上，而是在空间域上进行的预测编码算法，可以除去相邻块之间的空间冗余度，取得更为有效的压缩。
如图4所示，4×4方块中a、b、…、p为16 个待预测的像素点，而A、B、…、P是已编码的像素。如m点的值可以由（J＋2K＋L＋2）/ 4 式来预测，也可以由（A+B+C+D+I+J+K+L）/ 8 式来预测，等等。按照所选取的预测参考的点不同，亮度共有9类不同的模式，但色度的帧内预测只有1类模式。
面向IP和无线环境H.264 草案中包含了用于差错消除的工具，便于压缩视频在误码、丢包多发环境中传输，如移动信道或IP信道中传输的健壮性。为了抵御传输差错，H.264视频流中的时间同步可以通过采用帧内图像刷新来完成，空间同步由条结构编码（slice structured coding）来支持。同时为了便于误码以后的再同步，在一幅图像的视频数据中还提供了一定的重同步点。另外，帧内宏块刷新和多参考宏块允许编码器在决定宏块模式的时候不仅可以考虑编码效率，还可以考虑传输信道的特性。
除了利用量化步长的改变来适应信道码率外，在H.264中，还常利用数据分割的方法来应对信道码率的变化。从总体上说，数据分割的概念就是在编码器中生成具有不同优先级的视频数据以支持网络中的服务质量QoS。例如采用基于语法的数据分割（syntax-based data partitioning）方法，将每帧数据的按其重要性分为几部分，这样允许在缓冲区溢出时丢弃不太重要的信息。还可以采用类似的时间数据分割（temporal data partitioning）方法，通过在P帧和B帧中使用多个参考帧来完成。
在无线通信的应用中，我们可以通过改变每一帧的量化精度或空间/时间分辨率来支持无线信道的大比特率变化。可是，在多播的情况下，要求编码器对变化的各种比特率进行响应是不可能的。因此，不同于MPEG-4中采用的精细分级编码FGS（Fine Granular Scalability）的方法（效率比较低），H.264采用流切换的SP帧来代替分级编码。
性能比较
TML-8为H.264的测试。测试结果所提供的PSNR已清楚地表明，相对于MPEG-4（ASP：Advanced Simple Profile）和H.263++（HLP：High Latency Profile）的性能，H.264的结果具有明显的优越性。
H.264的PSNR比MPEG-4（ASP）和H.263++（HLP）明显要好，在6种速率的对比测试中，H.264的PSNR比MPEG-4（ASP）平均要高2dB，比H.263（HLP）平均要高3dB。6个测试速率及其相关的条件分别为：32 kbit/s速率、10f/s帧率和QCIF格式；64 kbit/s速率、15f/s帧率和QCIF格式；128kbit/s速率、15f/s帧率和CIF格式；256kbit/s速率、15f/s帧率和QCIF格式；512 kbit/s速率、30f/s帧率和CIF格式；1024 kbit/s速率、30f/s帧率和CIF格式。