查看完整版本: 解析:显卡的硬件加速差异化

lhlhlh2004 2007-10-26 16:19

解析:显卡的硬件加速差异化

[b][color=#ff0000][table=98%][size=2][/size][tr][td=1,1,812][url=http://www.ihtpc.net/][font=宋体][size=2][color=#800080]来源:HTPC源动力[/color][/size][/font][/url][/td][/tr][/table][/color][/b]
[b][color=#ff0000]◆ HD时代,谁会领军?[/color][/b]
    现在到了[b][color=#ff0000]HD高清时代,显卡的视频加速也由Mpeg2,发展到了硬件加速VC-1、H.264[/color][/b]。在这两大视频编码规格的硬件加速上,主流品牌NVIDIA和ATI都做得不错,而在整合图形市场占有巨大份额的Intel则毫无建树。
    我们先来简单回顾一个要点,那就是高清硬件解码的原理。从后面的测试成绩读者就可以明白,[b][color=#ff0000]显卡具备高清视频硬件加速是一回事,而高清硬件加速的能力高低又是另一回事,这和显卡所负担的高清解码的程度有关,显卡负担的任务越多,CPU的占用率就越低,显卡的高清解码能力也就越强,反之显卡的高清解码能力就越弱。[/color][/b]
    从影片来看,高清编码的处理一般分为几个步骤,每个步骤会完成相应的任务,而解码的时候也会存在这些步骤,从而达成影片的顺利播放。这些步骤都会被执行(也许个别步骤可以省略,但是主要步骤都会存在),但是处理这些步骤的配件可能不同。
[b][color=#ff0000]◆ 三种高清视频的编码步骤[/color][/b]
[align=left]    我们下面来看看高清视频所应用的3种主流编码格式,包括Mpeg2、VC-1、H.264的解码流程对比(见下图)。可以看出,几种编码格式还是有不少区别的,这也是造成几种编码格式要求不同的原因,H.264编码格式最为复杂,因此系统要求最高,VC-1略有降低,但是也比Mpeg2高得多。[/align][table=75][tr][td=5,1][color=#ffffff][b]三种主流高清视频编码格式处理流程对比[/b][/color][/td][/tr][tr=#eeeeee][td=1,1,230][b]视频编码格式[/b][/td][td=1,1,230][b]流处理[/b][/td][td=1,1,230][b]视频变换[/b][/td][td=1,1,230][b]动态补偿[/b][/td][td=1,1,230][b]去块滤波[/b][/td][/tr][tr=#eeeeee][td]MPEG-2[/td][td]VLC[/td][td]反离散余弦变换
(浮点)[/td][td]帧间编码
(双线性插值)[/td][td]N/A[/td][/tr][tr=#eeeeee][td]VC-1[/td][td]VLC[/td][td]反离散余弦变换
(整数)[/td][td]帧间编码
(双三线插值)[/td][td]循环[/td][/tr][tr=#eeeeee][td]H.264/AVC[/td][td]VLC/CAVLC/CABAC[/td][td]反离散余弦变换
逆变换[/td][td]帧间编码

帧内编码[/td][td]循环[/td][/tr][/table]
[align=center][b]『3种主流高清视频编码格式流程对比,还是有不少区别的』[/b][/align][align=left][b]◆ 高清视频编码步骤的CPU占用率分析[/b][/align][align=left]那么究竟哪个步骤最为消耗CPU占用率呢?下面的测试对比应该最能说明问题(见下图)。对比的视频包括Mpeg2和H.264(AVC),其中上面我们讲到的四个步骤都有涉及。显而易见,“流处理”是所有编码格式中最为消耗处理器运算的部分,但是Mpeg2视频的这部分还并不会造成很大的困扰,因为CPU的占用率还不到2%。[/align][table=75][tr][td=5,1][color=#ffffff][b]不同编码格式在解码过程中各个步骤的CPU消耗比率[/b][/color][/td][/tr][tr=#eeeeee][td][b]编码格式[/b][/td][td][b]MPEG-2[/b][/td][td=3,1][b]H.264/AVC[/b][/td][/tr][tr=#eeeeee][td][b]数据流算法[/b][/td][td]VLC[/td][td]CAVLC[/td][td]CABAC[/td][td]CABAC[/td][/tr][tr=#eeeeee][td][b]码率[/b][/td][td]8Mb/s[/td][td]20Mb/s[/td][td]20Mb/s[/td][td]40Mb/s[/td][/tr][tr=#eeeeee][td][b]流处理 占用率[/b][/td][td]1.6%[/td][td]8.9%[/td][td]26.5%[/td][td]47.8%[/td][/tr][tr=#eeeeee][td][b]视频变换 占用率[/b][/td][td]0.7%[/td][td]1.2%[/td][td]1.5%[/td][td]2.6%[/td][/tr][tr=#eeeeee][td][b]动态补偿 占用率[/b][/td][td]0.5%[/td][td]11.0%[/td][td]11.5%[/td][td]11.6%[/td][/tr][tr=#eeeeee][td][b]去块滤波 占用率[/b][/td][td]N/A[/td][td]8.2%[/td][td]8.5%[/td][td]8.2%[/td][/tr][tr=#eeeeee][td=5,1]注:以上的是4种不同的视频数据流算法解码时4个主要步骤所消耗的CPU占用率[/td][/tr][/table]
[align=center][b]『不同步骤的CPU占用率对比,显然H.264编码的“流处理”要求最高』[/b][/align][align=left]    但是对于H.264来说,问题就出现了,20Mb/s编码率的视频流处理过程就会达到26.5%的CPU占用率,加上别的处理达到48%的总CPU占用率;40Mb/s的高编码率视频更为夸张,流处理的过程上升极快,达到了47.8%,加上别的处理,总CPU占用率突破70%。[/align][align=left]    这四个步骤,如果全是由CPU来负责,占用率自然高居不下。因此,如果显卡能承担一部分甚至全部的解码步骤,CPU自然就能释放更多的负载,保证视频播放的流畅。[/align][align=left][b]◆ 关于显卡硬件加速能力的标准[/b][/align][align=left]我们都知道显卡是否具备硬件加速的能力可以通过播放软件的信息查证,凡是能开启“DXVA”的显卡我们都说它具备硬件加速的能力。而DXVA是微软制定的标准,对于高清视频来说,这个标准的版本是2.0标准。[/align][align=left]    显卡硬件支持DXVA规范,不代表就实现了里面所有的功能,所以微软的DXVA 2.0标准就为显卡的硬件解码加速能力分出了不同的档次。档次区分的标准是显卡能实现硬件解码能力的差异,就是上面我们所说的4个解码步骤,能实现的步骤越多,显卡的级别也就越高。对于H.264视频格式来说,显卡的解码能力被分为了A~F共6个等级,其中A为最低,F为最高。[/align][align=left]    硬件加速级别从高到低的顺序为:VLD(bitstream流处理) > IDCT(帧内编码) > MoComp(帧间编码) > PostProc(显示后处理,比如去码滤波操作)。[/align][align=left]    其中VLD加速包含了IDCT,MoComp和PostProc(上文所讲的全部4个步骤);IDCT加速包含了MoComp和PostProc(上文所讲的后3个步骤);MoComp加速包含了PostProc(上文所讲的后2个步骤);PostProc只有自己(上文所讲的最后1个步骤)。[/align][align=left]    对于H.264,还有一个FGT(Film Grain Technology)的额外技术,所谓胶片感,也就是影片中的颗粒感觉。未来的H.264编码器将会有FGT的开关选项,比如针对录像摄影素材则将FGT关闭,而对于胶卷摄影,出于胶卷的特性则将FGT打开,以保持特有的颗粒信息。而在影碟机一方,其解码器将识别颗粒信息,并在噪音滤波器中应用到H.264的视频流上。[/align][align=left]    至于VC-1方面,它被分为A~D四个级别,对应的每个级别和H.264类似,但是因为没有了FGT技术,所以比.264缺少了3个级别。[/align]
页: [1]
查看完整版本: 解析:显卡的硬件加速差异化