|
载入中...
要流畅播放高清影片首先就是解码速度的问题,负责高清影片视频解码的工作以前主要由处理器来负责。而之前的一代显卡也能支持高清解码,但是仅仅能支持高清解码的部分步骤,因此我们将其定义为“高清辅助解码加速”。因为不支持高清解码的关键步骤,所以前一代显卡负责解码高清时的CPU占用率仍旧很高,甚至可能无法流畅播放部分高要求影片。而到了现在的新一代显卡,比如Radeon HD 2600和2400显卡上,其具有的UVD引擎真正接管了所有高清解码的步骤,从而大大释放了CPU占用率,真正实现了“完全的高清解码”。
高清编码的处理一般分为几个步骤,每个步骤会完成相应的任务,而解码的时候也会存在这些步骤,从而达成影片的顺利播放。这些步骤都会被执行(也许个别步骤可以省略,但是主要步骤都会存在),但是处理这些步骤的配件可能不同。电脑上,自然是CPU和显卡这两个配件来执行,我们播放高清影片导致的不流畅大都是因为CPU占用率过高,原因就是CPU处理了大部分步骤或者负载很高的步骤,显卡能解决的问题就是它来承担这些负载很高的步骤,从而释放了CPU的负担。
那么究竟高清编码的步骤有哪些,哪些又是负载最高的部分呢?就H.264视频而言,分为四个主要部分(见下图)。图中的四个方块基本就是H.264解码的四个最主要步骤,也是资源消耗的主要四个部分,其中又以第一步的“CAVLC/CABAC解码”最为消耗运算资源,这方面远高于其他三步(简单的说,CAVLC/CABAC是H.264编码规范中两种不同的算法,际俏了提高压缩比,其中CABAC比CAVLC压缩率更高,但解码时自然也要求更高)。

『H.264解码流程图,其中第一个流处理部分最为消耗硬件资源』
其它编码格式与H.264类似。我们下面来看看主流的3种编码格式,包括Mpeg2、VC-1、H.264的解码流程对比(见下图)。可以看出,几种编码格式还是有不少区别的,这也是造成几种编码格式要求不同的原因,H.264编码格式最为复杂,因此系统要求最高,VC-1略有降低,但是也比Mpeg2高得多。
三种主流高清视频编码格式处理流程对比 |
视频编码格式 |
流处理 |
视频变换 |
动态补偿 |
去块滤波 |
MPEG-2 |
VLC |
反离散余弦变换 (浮点) |
帧间编码 (双线性插值) |
N/A |
VC-1 |
VLC |
反离散余弦变换 (整数) |
帧间编码 (双三线插值) |
循环 |
H.264/AVC |
VLC/CAVLC/CABAC |
反离散余弦变换 逆变换 |
帧间编码 或 帧内编码 |
循环 |
『3种主流高清视频编码格式流程对比,还是有不少区别的』
那么究竟哪个步骤最为消耗CPU占用率呢?下面的测试对比应该最能说明问题(见下图)。对比的视频包括Mpeg2和H.264(AVC),其中上面我们讲到的四个步骤都有涉及。显而易见,“流处理”是所有编码格式中最为消耗处理器运算的部分,但是Mpeg2视频的这部分还并不会造成很大的困扰,因为CPU的占用率还不到2%。
不同编码格式在解码过程中各个步骤的CPU消耗比率 |
编码格式 |
MPEG-2 |
H.264/AVC |
数据流算法 |
VLC |
CAVLC |
CABAC |
CABAC |
码率 |
8Mb/s |
20Mb/s |
20Mb/s |
40Mb/s |
流处理 占用率 |
1.6% |
8.9% |
26.5% |
47.8% |
视频变换 占用率 |
0.7% |
1.2% |
1.5% |
2.6% |
动态补偿 占用率 |
0.5% |
11.0% |
11.5% |
11.6% |
去块滤波 占用率 |
N/A |
8.2% |
8.5% |
8.2% |
注:以上的是4种不同的视频数据流算法解码时4个主要步骤所消耗的CPU占用率 |
『不同步骤的CPU占用率对比,显然H.264编码的“流处理”要求最高』
但是对于H.264来说,问题就出现了,20Mb/s编码率的视频流处理过程就会达到26.5%的CPU占用率,加上别的处理达到48%的总CPU占用率;40Mb/s的高编码率视频更为夸张,流处理的过程上升极快,达到了47.8%,加上别的处理,总CPU占用率突破70%。
上文已经提到,这四个步骤的处理配件不同,主要是CPU和显卡。在之前,CPU因为处理了更多的步骤,所以占用率高居不下,因此如果显卡能承担越多的解码步骤,CPU就能释放更多的负载,以保证视频播放的流畅。
通过具有H.264硬件解码引擎的显卡,就可以共同完成H.264编码的全部4个处理步骤,这就是它们能让H.264高清视频播放的CPU占用率大幅度下降的根本原因。既然显卡完成了所有的高清解码处理,那么CPU自然就空闲了。
|