高清的秘密——H.264编解码技术剖析
技术空间
随着HDTV的兴起,H.264这个规范频频出现在我们眼前,HD-DVD和蓝光DVD均计划采用这一标准进行节目制作。而且自2005年下半年以来,无论是NVIDIA还是ATI都把支持H.264硬件解码加速作为自己最值得夸耀的视频技术。H.264到底是何方“神圣”呢?
什么是H.264
H.264是一种高性能的视频编解码技术。目前国际上制定视频编解码技术的组织有两个,一个是“国际电联(ITU-T)”,它制定的标准有H.261、H.263、H.263+等,另一个是“国际标准化组织(ISO)”它制定的标准有MPEG-1、MPEG-2、MPEG-4等。而H.264则是由两个组织联合组建的联合视频组(JVT)共同制定的新数字视频编码标准,所以它既是ITU-T的H.264,又是ISO/IEC的MPEG-4高级视频编码(Advanced Video Coding,AVC),而且它将成为MPEG-4标准的第10部分。因此,不论是MPEG-4 AVC、MPEG-4 Part 10,还是ISO/IEC 14496-10,都是指H.264。
H.264最大的优势是具有很高的数据压缩比率,在同等图像质量的条件下,H.264的压缩比是MPEG-2的2倍以上,是MPEG-4的1.5~2倍。举个例子,原始文件的大小如果为88GB,采用MPEG-2压缩标准压缩后变成3.5GB,压缩比为25∶1,而采用H.264压缩标准压缩后变为879MB,从88GB到879MB,H.264的压缩比达到惊人的102∶1!H.264为什么有那么高的压缩比?低码率(Low Bit Rate)起了重要的作用,和MPEG-2和MPEG-4 ASP等压缩技术相比,H.264压缩技术将大大节省用户的下载时间和数据流量收费。尤其值得一提的是,H.264在具有高压缩比的同时还拥有高质量流畅的图像。
H.264算法的优势
H.264是在MPEG-4技术的基础之上建立起来的,其编解码流程主要包括5个部分:帧间和帧内预测(Estimation)、变换(Transform)和反变换、量化(Quantization)和反量化、环路滤波(Loop Filter)、熵编码(Entropy Coding)。
1.帧间和帧内预测
帧间和帧内预测的混合编码可以大幅度消除或减少影像中的重复元素,它占整个运算量的60%~70%。采用MPEG编码技术的画面(帧速为25fps或30fps)按构成方式不同分为三种:帧内编码I画面、前向预测编码P画面和双向预测编码B画面。这种分类方式是根据运动预测单元而定的,运动预测的作用是确定和消除存在于视频流中不同图片之间的时间冗余。

(1)帧内编码I画面是使用原始数据直接编码,所以I画面编码量、信息量和数据量最大,但正因为它包含当前帧的所有信息,可以仅用自身的数据独立还原画面。如果视频画面中出现马赛克或其他错误,只要后面一帧I画面出现就能修正错误,继续播放下去。这也是我们压缩编码量的最主要目标之一。
(2)前向预测编码P画面是用最近的帧内编码I画面或前向预测编码P画面作为比较基准进行运动预测,只记录这帧画面与基准画面的不同之处。这样的编码效率较高、数据量小,但还原画面就需要前面的基准帧数据。若前面的基准画面已经出错,那么这个错误会一直被传递下去,直到包含全部信息的“帧内编码画面”画面到来。

(3)双向预测编码B画面是同时用前面和后面的画面作为比较基准进行运动预测。编码压缩率最大,数据量最小,而且不会传递错误。但需要附加存储器,时间上有滞后,还不能作为以后的预测基准。
H.264的一个重大改进就是在帧内编码I画面中加入了帧内预测编码技术,即解码时先从周围像素预测编码块像素,然后求出原图像和预测图像的差分,最后用整数正交变换编码,这就是用周围数据的差分值来重新构造画面。因为画面图像的左右、上下肯定都有一定的相关性,所以采用预测编码技术后,差分值总量比不进行帧内预测的原始值少,这样量化后的编码量就减少了,从而缩小了文件。

另外,H.264在运动预测中采用了全面预测技术,效果非常好。H.264有7种运动矢量检出模式,而MPEG-2只有1种运动矢量检出模式,MPEG-4有两种。相比之下H.264更容易找到更多的画面静态部分,从而减少画面的编码量。帧内预测和全面预测技术在MPEG-2时代也曾提出过,但因为当画面像素数和画面品质要求提高时,运算处理量就会爆发性地增加,而当时的解码硬件性能都比较低,在实时运用中肯定会出现中断现象。所以MPEG-2和MPEG-4的运动预测规格都指定了最低限度,运动矢量检出编码时的自由度不能太大。
2.变换和反变换
H.264的帧间预测和帧内预测是以庞大的运算量为支撑点,处理单元的工作量非常大。针对这一问题,H.264引入了DCT(离散余弦变换)的简化处理技术,以降低运算量。该技术的实现方法是把原来的DCT改变为近似的整数变换。这样原来必须用浮点进行的余弦函数运算就可以用整数运算进行。换句话说,就是原来变换时所用的系数用接近整数的数值来代替。整数系数消除了MPEG-2或MPEG-4中进行浮点运算时导致的精度损失,这样就削减了系数的种类,从而减少了运算量。
3.量化和反量化
量化也是一项减少运算量的处理方法,它是把矩阵数据块变成小块运算,即把大数据变成小数据,这就使计算变得更加简单(其实质就是一个层次化的问题)。举个例子,如果在运动补偿过程中使用量化处理方式,那么在全面检索运动矢量时,就会先对模块范围进行收缩,然后在小范围内进行检索,这样就降低了运算量,提高了运算单元的执行效能,加快了处理速度。同理,如果在帧内预测采用量化技术,也可以缩小计算范围,减小运算量。

4.环路滤波
视频领域的环路滤波其实是一个让图像更清晰的处理过程。为了消除在预测和变换过程中引入的块效应,H.264也采用了消除块效应滤波器——环路滤波器。但与MPEG-2不同的是,H.264的环路滤波器位于运动估计循环内部,因而可以利用消除块效应以后的图像去预测其他图像的运动,从而进一步提高预测精度。
5. 熵编码
熵编码其实是一种独特的纠错编码技术,它能大大提高编码的纠错能力。H.264的熵编码有两种:一种是内容自适应可变长度编码(CAVLC),另一种是内容自适应二进制算术编码(CABAC)。与MPEG-2和MPEG-4采用的霍夫曼编码相比,熵编码更加灵活和高效。
H.264的图形硬件加速方案
复杂的编码算法给H.264带来了更高的压缩率,同时也大大提高了它对硬件的要求。据相关资料显示,H.264的影片在编码过程中的复杂度是MPEG-2的10倍,解码的复杂度是MPEG-2的3倍,而且高清影视还都具有极高的分辨率这就更加重了它对系统的负担。所以各个厂商分别开发了各种H.264的编码、解码芯片用于硬件加速。具体到计算机的H.264解码而言,由于最初的H.264解码完全是依靠CPU来处理的,所以即使CPU频率高达3GHz以上,但在播放H.264高清视频时CPU占用率往往高达100%,而且无法达到流畅播放的效果,所以图形硬件加速势在必行。
ATI与NVIDIA自然不会对未来的视频标准视而不见,很快它们就分别推出了各自的视频解决方案。ATI使用强大的AVIVO技术,而NVIDIA也同样有PureVideo技术来撑腰,它们都是一套综合的视频优化技术,而且都包括了H.264的硬件解码加速。
ATI的X1000系列图形芯片支持AVIVO技术,可以对视频进行自动增益控制、3D梳型滤波、硬件消除噪声和数字解调等处理,来提高视频品质。而且AVIVO支持H.264、VC-1、WMV9、WMV9 PMC、MPEG-2、MPEG-4、DivX等格式的硬件加速。显卡VPU可以使用渲染引擎来处理H.264解码过程中的大部分运算,从而将CPU从解码运算的重负中解放出来。
ATI在2005年年底发布的5.13版催化剂驱动程序和Cyberlink H.264解码器中已经加入了H.264播放的支持,不过在较新的6.4版催化剂驱动中,ATI进一步完善了对H.264的支持,并开启了X1000系列的更多功能。通过最新的驱动程序,ATI显卡可以大幅度优化H.264视频的播放速度,从而提升系统的效能。按照ATI的推荐,X1300显卡可以实现480p、576p 的H.264加速播放,X1600可以实现720p 的H.264加速播放,而X1800显卡则可以实现1080i和1080p 的H.264加速播放。这是因为H.264的画质越高,硬件加速需要动用的像素计算资源越多。
NVIDIA在2004年年底就发布了PureVideo视频技术,它是GeForce6/7系列GPU内建的可编程视频处理引擎,可以为H.264、VC-1、WMV和MPEG-2格式影像提供硬件加速,并能对视频进行后期处理优化,如去交错式扫描处理等。PureVideo技术还将CPU和3D引擎从复杂的视频处理任务中解放出来,让PC能够同时运行多种任务。但最初它仅支持MPEG-2和WMV加速,直到今年ForceWare 84.12Beta版驱动发布以后,PureVideo中的H.264加速功能才被真正开启。

NVIDIA表示,现有的GeForce 6200、7300、6600、6800、7800系列都提供了H.264的硬件加速,其中GeForce 7300、6600、6800、7800系列均支持1080p 规格的H.264。而针对低端入门市场的GeForce 6200最高具备H.264 720p硬件加速能力。至于集成显示核心GeForce 6150则支持720p和480P的H.264影片。
编注:关于PureVideo技术和AVIVO技术的详细介绍,请分别参阅本报2005年第3期E12版《从NVIDIA PureVideo技术谈GPU视频引擎》一文和第43期E13版《PureVideo的对手来了——AVIVO视频加速技术解析》一文。
写在最后
作为新一代的视频编码标准,H.264在追求更高的编码效率和简洁的表达形式的同时,也提供了非常好的视频质量,它是当前最高效的视频压缩技术。与目前广泛应用的视频编解码技术MPEG-2、MPEG-4等相比,同样的图像质量情况下,H.264的编码效率提高了30%~40%,相应地节约了至少30%的网络带宽。在当今网络带宽越来越宝贵、用户对高清需求又越来越强烈的情况下,采用H.264标准已成为在有限带宽下满足用户需求的理想方案。虽然由于编解码相对复杂及其他一些原因,H.264在实际应用中还不可能完全发挥出其全部的优势,但我们相信,随着对H.264技术的不断优化,它最终必将成为高清时代编解码技术的主力军。