从NVIDIA PureVideo技术谈GPU视频引擎

技术大讲堂

目前,高清晰数字视频是大家讨论的热门话题,网上也出现了不少高清晰数字视频供大家下载欣赏,看着比DVD更清晰的画面的确让人兴奋。不过,在兴奋的同时,大家却发现另外一个问题,高清晰数字视频对电脑要求似乎高了一点,没有3GHz的CPU,很难流畅地观看1080i的高清晰数字视频,因为目前高清晰视频的解码工作主要是CPU承担。那么,我们的显卡在做什么,能不能让显卡对高清晰视频的播放加速呢?

在发布NV40之初,NVIDIA就一度骄傲地宣称NV40中视频引擎所占用的晶体管数甚至比最初的GeForce 256芯片还多,同时对视频处理器作了相当多的承诺,比如宣称可以达到全硬件视频加速,对1080i分辨率的MPEG2和WMV9进行编解码。这意味着主要依靠CPU进行视频编码将成为过去,随便一颗低速CPU只要配上具有NVIDIA视频处理器的显卡,就可以流畅地处理各种视频。但NV40发布后的很长一段时间内,NVIDIA并没有兑现他们的承诺。难道这个所谓的视频引擎仍存在BUG?GeForce 6系列显卡是否真的具有视频编码硬件加速功能?这些一直是我们心中的谜。不过,现在NVIDIA终于实现了这个诺言——在2004年圣诞节前正式推出了“PureVideo”技术,这就是我们期盼已久的NV40视频引擎的变身。

被人们忽略的幕后主角——GPU的视频功能

长期以来3D性能似乎是大家衡量图形显示核心架构优劣的唯一重要指标,认为只要GPU拥有强大的3D性能,能为我们带来流畅、华丽的游戏画面即可。其实渲染3D动画仅仅是显卡的其中一个功能,诸如视频播放、解码等多媒体播放功能并不是单单3D功能就可以完成的,这里面就涉及到一直被大家所忽略GPU视频引擎。

视频引擎主要负责数字视频编码、解码工作。目前的视频压缩规格主要是采用由国际标准化组织和ITU制定发布的视频、音频、数据的压缩标准——MPEG(Moving Pictures Experts Group),因此对MPEG的解码、编码支持程度就成为了衡量视频引擎性能的一个重要指标。传统显示芯片的视频处理包括两种主要视频功能:播放(解码)和记录模拟视频信号并将其转化为一种特定的数码格式(编码)。除了3D运算逻辑单元,图形芯片内还包含MPEG解码逻辑单元,采用动态补偿技术来提供对解码的支持,而对于编码、压缩采用的是DCT变换压缩算法。

目前显示芯片所支持的MPEG格式主要有MPEG 1、MPEG 2两种。因此MPEG 1、2格式的编码、解码能力往往成为了衡量一款显示芯片视频性能的一个重要指标。

如最初在电脑上播放VCD的时候,VCD解码任务都是由软件完成的,CPU负责实际的运算工作,但这种做法的缺陷在于对CPU的运算力要求很高,性能不足的CPU甚至不能完成,不得不借助专门的硬件解压卡完成视频解码运算。后来随着显示核心性能的提升,各图形芯片厂商都将视频解码部分整合于图形芯片内,由图形芯片直接进行MPEG辅助解码。起初,集成的只是MPEG1解码单元,DVD出现后顺理成章地升级至MPEG2规格,但并没有改变其本质,仅仅属于软解决方案(注:视频处理部分仍是与着色引擎共用资源,编码、解码交由像素着色引擎来负责,通过借助CPU以及软模拟方式来完成。)。

比如ATi产品现在采用称为Videoshader的最新解决方案就属于软解决方案。Videoshader是ATi在R300中的视频解决方案,提供对MPEG1、2级别的编码以及解码功能的支持,从“Videoshader”的字眼“视频着色引擎”就可以看出,Videoshader所负责的视频处理业务是由像素着色引擎来完成的(图1)。

3-e12-1.jpg
图1

视频解码的好几个处理过程由像素着色引擎来完成有一个好处,因为它可以利用像素着色管线的特点实现实时过滤功能。例如在低分辨率的影片下停止像素化(注:Videoshader技术应用的典型例子是为视频流去除马赛克),或是对特定的编码/译码程序做最优化等。使用者只要升级驱动程序,就可以对最新视频格式进行优化播放。虽然X800中的最新版本Videoshader HD增加了对MPEG4硬件级别的编码以及解码的支持,不过无论是MPEG1、2,还是MPEG4,这一切还没有脱离借助CPU利用软件计算的编码功能来实现MPEG硬编码以及解码。

在产品的视频功能上,虽然NVIDIA曾和ATi一样是走“软”路,但NVIDIA最终在NV40中另辟蹊径推出了其最新的硬件视频引擎解决方案。

NVIDIA的硬解决方案——PureVideo视频引擎技术

NVIDIA正式对NV40的视频引擎命名为“PureVideo”,其视频处理功能已经从此前的像素引擎中脱离,改由一个整合的专用视频处理引擎负责,相当于一个二合一的芯片:一个GPU和一个视频处理器,可以做实时的硬件视频编码与译码之用。因此PureVideo视频引擎要真正实现MPEG硬解码就必须拥有负责对MPEG 1/2码流解码的单元,能像传统的视频解码芯片一样对MPEG 1/2码流进行拆包和视频解码及音频解码处理。

1.PureVideo的组成

PureVideo可编程视频处理器由取址,标量(注:标量单元采用16路的SIMD引擎)、矢量、分支四个单元构成,在MPEG2码流的解码过程中专门负责“变长码解码、反扫描、反量化、反DCT和运动补偿”几个主要功能模块的处理。这些模块的执行速度直接影响着整个码流的解析效率,其处理结果也决定了解码图像恢复的效果。因此PureVideo在对源代码进行优化时,对于IDCT变换部分,转换系统使用快速IDCT变换并使用了MMX指令对IDCT进行了优化,并且在进行MPEG2 动态补偿的时候PureVideo视频引擎负责大部分需要较多运算的工作,来提高解码速度(图2)。

3-e12-2.jpg
图2

值得一提的是,NVIDIA在官方主页上声明:GeForce 6全系列GPU可以通过驱动支持来实现WMV 9以及MPEG4格式的硬件解码。当然为了让GeForce6800/6600系列以及NVIDIA DVD decoder具备硬件视频解码功能,用户们必须去下载最新的ForceWare驱动,此外还必须对Windows Media Player进行更新。

2.PureVideo的特点

其中,PureVideo技术的一个重要特性就是支持“反交错处理”(de-interlacing)功能来改善图像品质。我们都知道,在视频播放中最佳效果是画面能以连续不断的帧率输出,但受制于输出和接收带宽,播放设备根本无法在一个单位时间内完成一个完整画面的输出。这时人们想到了一个解决办法,那就是先把画面分成不同的部分,然后把这些不同的部分按照原有的顺序连续不断地输出;如果这个输出过程够快,人眼就很难觉察到画面的间隔。这种处理方法也就是平时所称的隔行扫描,目前大多数电视与DVD影片内容都属于交错式处理。但此类解决方案有一个缺点:那就是在PC等设备上播放由采用此种模式制作的DVD时,通常会呈现较差的影像质量,比如会出现难以避免的锯齿状影像边缘。

对这个问题人们推出了“反交错处理(De-interlacing)”来消除。反交错处理就是只要把完整的画面分隔为奇数行和偶数行,然后把全部的奇数行输入到奇数半帧,把其余所有的偶数行输入到偶数半帧即可。此技术会根据每个画面的变化进行比对,以最小失真的演算方式有效将影像边缘的锯齿消除,从而得到更平滑的影像,因此也称为视频反锯齿技术。目前逐行扫描DVD或电视就是采用类似技术来优化播放画面的,而PureVideo技术的“反交错处理”同样也是采用此类方法。目前反交错处理有两种方式,一种名叫 Weave De-interlacing,另一种名叫 Bob De-interlacing,各有其优点及缺点。在这里,NVIDIA的 PureVideo运用先进动态调节Spatial-Temporal“反交错处理”,可以针对每个像素“反交错处理”。一般情况下,普通的像素进行相适应“反交错处理”使用的是单个画面扫描帧的数据,而NVIDIA的Spatial-Temporal“反交错处理”可以使用其他画面的扫描帧以提高“反交错处理”的质量(图3)。

3-e12-3.jpg
图3

为搭配PureVideo,NVIDIA已经推出了相应的ForceWare 67.01驱动程序及NVIDIA DVD 解码器。大家可以在相应控制面板里选择“反交错处理”功能(注:NVIDIA的解码器设置为“自动”分离隔行,如果你有GF6级别的显卡,建议你选择智能模式来达到最佳播放效果)。同时由于电视电影(称为3∶2折叠)采用的24 FPS标准与DVD所采用的30 FPS不相匹配,这意味着当将电影转制成DVD时每秒钟的视频需要“补偿”6个帧。这些新的帧是通过合并可用帧的区段来创建的,因而通常可能造成图像模糊不清。值得称道的是,NVIDIA的PureVideo技术可以通过拆开3∶2折叠的图案,并使用原始的和高品质的帧以及区段来创造平滑的动画和更好的图像品质。

3.PureVideo的亮点

除此之外,PureVideo视频引擎的最大亮点应该是其真正支持视频编码硬件加速。要知道,视频编码是一项艰巨的需要耗费大量时间的过程,此前GPU所采用的视频模拟软编码往往占用大量的CPU以及系统资源。如果PureVideo真正实现硬编码,这意味能够以相同或者更低的比特率、更低的CPU占用量,提高系统性能,提供更出色的视频品质。不过,此次NVIDIA并没有详细公布相关技术资料。我们猜测PureVideo视频引擎的视频编码硬件系统同样是建立在MPEG2编码过程基础上、采用离散余弦变换DCT和运动补偿来对MPEG2视频图像进行压缩编码。在编码过程中,视频图像是分层的,目的是把比特流中逻辑上独立的实体分开,防止语意模糊,并减轻解码过程的负担。对于视频图像空间上的压缩采用的是DCT变换压缩算法已被证明是许多类图像的最佳变换,它只需要少量的数据点表示图像,因此它所产生的系数很容易被量化从而获得好的块压缩,在硬件和软件上都很容易实现。

值得一提的是,NV40不须修改任何软件程序或视频文件就可以达到视频播放加速功能,因为它的驱动程序直接拦截了所有DirectX的函数调用,直接转交由内建的视讯处理器来处理了。不过在MPEG 1/2/4的编码过程中,仍需要某些特别的软件了,同时NVIDIA将计划配合Windows Media Center Edition 2005来实现这个新功能。

为搭配PureVideo,NVIDIA已经特地推出全新的NVIDIA DVD 解码器。这个软件解码器是第一个获得微软“Designed for Media Center”认证的软件解码器,能发挥PureVideo技术在DVD播放方面画质优秀的特点,而且支持Windows Media Player和Microsoft Windows XP Media Center Edition 2005操作系统,可免费从NVIDIA网站下载。此外,NVIDIA亦发表首款支持PureVideo技术的ForceWare统一驱动程序来让我们免费享用这项新技术。

附注:有消息说,NVIDIA已经对NV40原有的视频架构进行改良,最初上市的GeForce6800 Ultra或GeForce6800GT显卡的视频性能反而低于刚推出不久的GeForce6600系列及GeForce6200系列显卡。这个消息是否属实还有待证明。不过可以肯定的事实,那就是只有拥有GeForce6系列的用户才能享用PureVideo技术所带来的视频享受。

结语:

从技术角度看,现在的图形显示核心都已经拥有各自的视频引擎解决方案,但可以肯定的是,一个好的视频引擎在播放数字视频时会给你提供更高质量的图像画面,并可以让你的CPU减少更多的负担。长期以来,NVIDIA产品所提供的视频品质均逊色于来自ATi的解决方案,不过这次NVIDIA的PureVideo技术终于一改其过去视频产品品质差强人意的局面,正朝着从家庭电影过渡到高清晰视频方面发展……