取长补短!另类CUDA高清
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
新探索
第1页:高清视频解码日趋成熟,但仍尚存争议
随着高清影片(视频)的不断普及流行,越来越多的普通用户开始尝试使用电脑播放或者直接使用电脑观看高清电影(视频),对于高清影片(视频)的效果,我想已经无需用更多的语言去渲染,看过的用户都知道它所能带来的视觉享受。
作为一家硬件媒体,我们的责任就是为大家传授使用电脑解码高清影片(视频)的各种技巧,并推荐相应的硬件系统去满足消费者的需求。谈到这里,很多读者肯定已经明白,没错,今天我们会向大家介绍高清视频解码的一个新方式、新途径、新手段,而且如题目所言,这个新的解码方式有着其独特的运作方式和效果。
现今高清影片(视频)的解码方式主要包括两种:一种是以CPU解码的所谓“软解”方式;而另一种则是通过显卡解码的所谓“硬解”方式。熟悉硬件的读者都知道,显卡的“硬解”是通过图形芯片内部集成的专用解码单元来实现的;在当前显卡并行处理技术大行其道的时候,我们终于看到了高清解码第三种方式的横空出世,那就是利用显卡流处理单元进行高清视频解码。
观看高清影片(视频)对于现今的电脑已经并不是什么高不可攀的事情
作为最早进入电脑高清视频解码领域研究的硬件媒体之一,我们已经为电脑高清解码的各类需求撰写了很多相关的文章,对高清解码原理尚不熟悉的读者可以回顾一下我们的相关文章。
· 《迎接DX10与高清时代!HD2000全面测试》
· 《高清革命!G84/G86视频加速引擎全测试》
· 《高清实战问题多!买显卡该选谁看通透》
· 《高清普及号角已吹响 HD解决方案报告》
· 《横扫60种高清显卡!性能/画质全解析》
· 《HD2000福音!VC-1高清硬解码不再遗憾》
· 《扫荡40余款处理器!全面挑战10大高清》
· 《10款整合芯片组竞逐!HTPC高清指南篇》
· [硬派高清频道]
从2007年高清视频进入我们的视线以来,通过电脑解码和播放高清视频已经逐渐被广大用户所熟悉和使用,但是围绕着高清解码的两种传统方式,却一直存在争议,这种争议的由来就是因为两种解码方式都有着明显的优势和相应的缺憾。CPU“软解”方式兼容性好,但解码效率偏低,能耗大;而显卡“硬解”方式效率高,能耗小,但兼容性离完美还有明显差距。
今天即将为大家介绍的第三种高清视频解码方式又是采用何种原理?其特点和优势又是哪些?这种方式对高清视频播放会造成哪些影响和变化?对消费者组建高清系统的方案又有什么新的指导意义?都是今天我们需要解决的问题。
在开始整篇文章的时候顺便提一下,采用显卡GPU流处理器单元进行高清解码运算目前只限于NVIDIA GeForce系列的DX10显卡,借助的软件接口是我们熟悉的CUDA通用计算技术。另外,实现加速方案的高清视频编码是目前高清光盘和网络压制视频最为常用的H.264编码格式。
第2页:诞生之初,高清解码成处理器的重负载
在电脑上(或利用电脑外接大屏幕电视)看电影、电视、演唱会视频等是很多电脑用户最主要的娱乐方式之一,因为视觉占人类感官的因素超过80%,所以满足视觉的最大需求,向着更大、更清晰、更锐利的画面进步就是视频改进的最佳方式。于是,在跨越了VCD、DVD后,视频开始迈向高清HD普及的道路。
和VCD、DVD一样,想要收看到高清视频(电影)同样可以购买专门的设备或服务,比如HDTV机顶盒、蓝光播放机、甚至PS3来达成这个需求,不过因为相应的高清播放设备和片源在国内尚未普及,反而是电脑和网络的普及度很高,所以大多数国内消费者更愿意用电脑或者HTPC来实现高清视频的梦想,于是,利用电脑解码高清视频就提到了议事日程之上。
在06年高清刚刚进入一些前卫视频爱好者眼中的时候,在电脑上进行高清解码的唯一方式就是“CPU软解码”,但因为视频流的高码率和解码方式的复杂,高清解码在当时成为了CPU的梦魔。
高清视频之所以造成了CPU的不堪重负,首先便是因为视频流量的加大。这是最为直观的一个提升元素,我们可以参照下面的
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
格,表格中只是简单的提出了“视频源”的流量对比,但其实高清视频的“不同格式”更为决定了流量的不同。可以看出,DVD视频,也就是Mpeg2视频的流量只有约9.5Mb/s,但是最高的蓝光DVD可以达到40Mb/s,提升了4倍以上,无疑这是硬件配置提升的一个主要原因,因为需要处理的数据量增大了很多。
主流视频光盘数据流负载对比
视频源
编码数据流量
DVD
~9.5Mbps
ATSC高清电视
~18Mbps
HD DVD
~30Mbps
蓝光DVD
~40Mbps
其次便是编码格式的更加复杂,每种编码格式都有其自身的算法,优秀的算法可以将视频压缩到更小的体积,但是还原这种算法却需要更强的计算能力,H.264高清编码格式就是典型的代表。现在看来,H.264因为优秀的算法取得了最广泛的支持,它的算法虽然复杂,但是能获得最高的压缩同时视频细节损失很小,但是H.264编码格式的流行也造成了当时解码高清视频的巨大难度。
2007年我们针对H.264视频播放的处理器解码占用率测试
上图是我们在2007年针对H.264高清视频播放的CPU占用率测试,可以看出,因为高清视频的高要求,即便是当时比较高档的双核处理器,应付高清视频的解码同样非常困难。即便到了今天,虽然四核处理器的价格已经降到了相对便宜的程度,但是由“CPU软解码”来实现高清播放的方式依然存在CPU占用率高,投入成本高、功耗大的缺憾。
第3页:显卡解码让高清视频播放问题迎刃而解
CPU解码高清视频有着占用率过高的巨大困难,而且CPU是电脑的通用运算核心,不可能为高清解码集成专用的运算单元,所以这个任务就交给了电脑的最重要多媒体运算部件——显卡。在2007年,世界上最大的两家图形核心
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
和制造厂商NVIDIA和ATI(AMD),几乎同时推出了集成高清视频解码单元的图形卡:GeForce 8600系列和Radeon HD2000系列,让高清视频解码的问题似乎迎刃而解。
NVIDIA的实现方式是在显卡核心中集成了最新的VP2和BSP视频引擎来专门进行高清编码格式的解码过程,ATI则是通过集成UVD引擎的方式来解决这个问题,下面我们用NVIDIA的PureVideoHD技术做代表简单回顾一下显卡接管高清解码的方式。
上图中每个流程的四个方块,基本就是H.264解码的四个最主要步骤,也是资源消耗的主要四个部分,其中又以第一步的“CAVLC/CABAC解码”最为消耗运算资源,这方面远高于其他三步(简单的说,CAVLC/CABAC是H.264编码规范中两种不同的算法,都是为了提高压缩比,其中CABAC比CAVLC压缩率更高,但解码时自然也要求更高)。
显然,显卡解码高清视频的最后结果就是:承担全部的H.264视频解码和处理过程,让其解码运算可以基本不依赖CPU!因为实现了这一点,所以消费者无需过分担心自己的处理器性能如何,不同的视频编码率导致的负载差距过大等等问题,只要插上一块能支持“H.264全解码”的显卡,就能无所顾忌的播放所有高清视频。
从上图的测试成绩可以看出,通过显卡来解码高清视频,对处理器的要求直线下降,可以说几乎摆脱了处理器的束缚,让高清解码成为了非常简单的事情,高清视频在电脑上的播放似乎“一卡永逸”的解决了问题。
但事情往往永远不是想象的那么完美,虽然高清解码似乎消除了CPU占用率的阻碍,但是却出现了不少兼容性的问题,让高清播放又留下了些许恼人的小麻烦。下面我们来看看在CPU占用率方面非常完美的“显卡视频单元硬解码”方式,在兼容性上出现了哪些问题。
第4页:显卡硬件解码高清造成的播放问题举例
虽然显卡硬解码在高清解码的效率上无与伦比,但是常常会出现一些兼容问题,下面我们举例几个解码常常出现的问题,如果您是一个高清爱好者,并经常使用硬件解码方式,肯定遇到过很多类似的问题。
(一)高清硬解码失效
具体表现为虽然设置上调用了显卡高清解码的视频单元,但是从CPU占用率来看,实际上硬件解码加速并没有打开。
HYPERLINK "http://www.inpai.com.cn/doc/pic.aspx?pic=http://img.inpai.com.cn/article/2009/3/31/113389cc-7f67-459b-bfa1-a635683767d8.jpg&id=92710" \t "_blank"
[显卡视频单元解码(MPCVideo解码器)]:硬件加速没有开启,CPU占用率较高
(二)高清硬解码导致画面停滞
具体表现为设置上调用了显卡高清解码的视频单元,实际上也确实成功,但是视频画面出现了停滞的情况。这种情况的出现往往并不影响声音和字幕的正常进行,通常还会出现CPU占用率异常低的表象。
[显卡视频单元解码(CLAVC解码器)]:画面停止在第一帧
(三)高清硬解码导致画面破损或闪动
具体表现为设置上调用了显卡高清解码的视频单元,实际上也确实成功,但是视频画面出现了大量闪动或者色块的现象,完全失去欣赏价值。
HYPERLINK "http://www.inpai.com.cn/doc/pic.aspx?pic=http://img.inpai.com.cn/article/2009/3/31/c308d237-9b9a-443f-81c9-412520ee378a.jpg&id=92710" \t "_blank"
[显卡视频单元解码(CLAVC解码器)]:画面出现色块,CPU占用率很低
第5页:显卡硬件解码高清兼容问题的原因
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
这些问题的出现,大都是因为显卡视频解码单元与微软的DXVA认证出现了兼容异常。我们都知道,成功开启显卡视频单元硬件加速后,视频播放信息会显示“DXVA”开启,这是判定显卡硬件解码的一个最重要表现,那么为什么显卡视频单元硬件解码会出现这么多的兼容问题呢?这还要从“DXVA”谈起。
“DXVA”全称是DirectX Video Acceleration(硬件视频加速接口),它是一个由微软和图形芯片厂商联合定义的一个硬件接口规范,就好象DirectX 3D是游戏开发的应用程序接口一样,DXVA就是视频硬件解码的程序接口,显卡的视频单元必须满足DXVA的规范和要求才能实现相应的功能。
需要说明的是,DXVA规范是一个具有“分级”的
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
,DXVA并不是只有“支持”、“不支持”两个档次,显卡硬件支持DXVA规范,不代表就实现了里面所有的功能,微软的DXVA 2.0标准为显卡的硬件解码加速能力分出了不同的档次。档次区分的标准是显卡能实现硬件解码能力的差异,能实现的步骤越多,显卡的级别也就越高。下图我们截取自微软的官方网站,可以看出,显卡对于H.264解码的能力被分为了A~F共6个等级,其中A为最低,F为最高。
如果一种显卡芯片在硬件上支持DXVA规范,并不代表它就实现了DXVA里面定义的所有功能。不过有一点可以肯定的是:对于DXVA定义的每一项功能,符合DXVA规范的显示芯片驱动程序一定会告诉系统,这项功能在它的硬件里实现了还是没有实现——这是DXVA规范强制性要求的,这样做的好处是应用程序不需要自己花费时间和精力去测试显卡有没有实现某项功能。
同样的,如果一种解码器支持DXVA规范,也不代表它就能利用DXVA规范里面所有的功能组合,它可以选择自己有能力支持的,或者想要支持的那些功能的组合,而其他功能组合也许就放弃了。但是,如果某种显示芯片虽然通过驱动表示支持某种功能,但解码器认为该芯片对这个功能的支持是不稳定的,容易导致系统崩溃或错误,那么解码器也可以放弃使用该芯片的这种功能。
我们上述说明的一些显卡硬解码问题显然都是出在此处,因为DXVA规范的要求比较严格,所以很可能出现调用显卡视频解码失败的情况或者出现兼容问题,这就是显卡硬件解码出现问题的主要原因。因为网上流传的视频种类奇多,编码格式和封装格式相对复杂,如果解码器在播放视频通过DXVA判定时,得到了解码器支持“不稳定”的结论,那么播放视频的时候就会自动放弃硬件解码;要么就是通过DXVA判定时,得到了解码器支持“稳定”的结论,开启了硬件解码,但是实际进行视频解码时却遭遇各种不可预知的“乱流”,显卡不知如何正确处理,那就会让画面出现破损、闪动甚至停滞。总之,因为DXVA的判定与目前国内用户常常播放的网络下载视频经常会出现一些不兼容,所以显卡视频单元硬件解码常常出现问题。
第6页:当前高清解码方式的对比,新方案诞生
看到了前面的各种问题,是不是喜欢观看高清视频的用户都遇到过呢?是否对于这些问题感到了烦恼和无奈呢?其实笔者本身也曾遇到过很多类似的问题,虽然硬件解码可以在哪怕90%的视频中没有问题,但就是10%遇到问题的视频,这些冒着种子失效辛苦下载的、让我们充满观看期待的视频无法采用显卡硬件解码播放,就足以让我们感到惋惜。
然而对于这问题,作为国内消费者的我们没有任何对产品和视频本身抱怨的理由。因为这些问题都是出现在视频本身压缩格式、封装方式的混乱,以及播放器的复杂上,熟悉高清播放的用户也许可以通过切换不同解码方式来试图解决这些问题,而对于一些初级用户,或者处理器不够强劲的用户,这些问题就比较头大了。
下面我们看一下目前主流的两种高清视频解码方式的优势与不足对比:
目前两种主流高清解码方式的对比
CPU软解码
显卡视频单元硬解码
优势
完美的兼容性,对视频的编码、封装格式几乎没有什么要求,播放器设置简单,基本一劳永逸。
CPU占用率极低,如果考虑集成主板会让高清播放设备成本很低,同时更为静音、更加节能。
不足
CPU占用率高,导致硬件系统的投入成本高,还会带来散热、功耗等问题。
兼容问题不时出现,对视频的编码和封装格式相对要求更严格,与操作系统、驱动程序乃至系统本身的其他软件都可能出现不兼容问题,从而导致高清视频无法播放或者画面破损等问题。
目前现存的两种主流高清解码方式都存在不足,对于消费者来说,也没有更好的解决办法,一般的高清用户都是在两种方式之间互相切换来获得互补。不过就在最近,第三种高清解码的方案诞生了,那就是利用显卡GPU的流处理器来进行高清视频的解码操作,主角就是大名鼎鼎的CoreAVC解码器。
我们已经能在CoreAVC的官方网站上看到关于最新1.9.5版本的广告,上面赫然悬挂着NVIDIA CUDA技术的Logo,说明它是采用到了CUDA技术作为软件的编程接口,从而利用到了GPU的流处理器来进行高清解码的操作。
在CoreAVC的官方网站上,我们看到了NVIDIA CUDA技术的Logo
在1.8.5版本或其之前的版本中,CoreAVC一直以来就是H.264编码的高清视频的最受欢迎软件解码方案(当然这对每个人来说并不绝对),也是流行的高清播放软件包“终极解码”默认的H.264软件解码器,不少高清玩家都非常熟悉这个解码器,其解码的效率和画质综合来说是最佳的,此次与NVIDIA CUDA技术的联姻,必然会使这款解码器的功能和效率更上一个档次。
其实在前段时间,CoreAVC 1.9.5版本发布之前的1.9.0版本,就已经能利用CUDA技术进行H.264高清视频的解码,只不过因为1.9.0版本仍存在一些播放色块问题,所以后续又推出了改进的1.9.5版本,我们今天也采用这个更为成熟的版本来进行说明和测试。
第7页:探索CUDA技术能为高清解码带来什么
最新的CoreAVC利用到了NVIDIA的CUDA技术,CUDA(Compute Unified Device Architecture)是一个新的基础架构,这个架构可以使用GPU来解决商业、工业以及科学方面的复杂计算问题。它是一个完整的GPGPU解决方案,提供了硬件的直接访问接口,而不必像传统方式一样必须依赖图形API接口来实现GPU的访问。
在架构上采用了一种全新的计算体系结构来使用GPU提供的硬件资源,从而给大规模的数据计算应用提供了一种比CPU更加强大的计算能力。CUDA采用C语言作为编程语言提供大量的高性能计算指令开发能力,使开发者能够在GPU的强大计算能力的基础上建立起一种效率更高的密集数据计算解决方案。
对于高清视频解码来说,其解码的运算复杂度并不高,但是对并行效率有很高的要求,这也是为什么多核处理器能大幅度降低高清解码CPU占用率的原因。而这,也正是GPU的强势,GPU拥有大量的流处理器,也就是所谓的并行可编程处理器。
采用CUDA作为编程接口,可以有效的利用GPU的流处理单元接管解码运算,从而解放处理器,实现大幅降低CPU占用率的目的,同时也保证视频播放的流畅。其次,视频解码操作比游戏处理的流处理器负载小很多,同样能保证节能的需求。最后,因为采用流处理器解码并不会调用到DXVA,就不会让兼容问题频繁出现。这就是采用流处理器进行视频解码的几个优势。
这就是今天我们为大家介绍和测试的第三种方式:“利用GPU流处理器解码高清视频的方式”,它与“CPU软解码”和“显卡专用视频单元硬解码”共同组成了目前三种解码高清视频的方式。不过我们不太好定义这种方式是“软或硬”,如果从“非CPU运算”的角度来讲,说“利用GPU流处理器解码高清视频的方式”也是硬解码的一种似乎也无不可。
至于我们今天介绍的第三种高清解码方式,能否让用户真正感到有用、并经常使用,还是需要等到我们测试完成后才能正式下定论。下面是我们的测试平台,为了考核各种解码方式的负载异同,我们特意采用了较低规格的处理器,但仍是双核产品。
需要验证的问题包括三方面,一方面是利用GPU流处理器解码能否达成CPU占用率的大幅度降低,以解脱CPU的负载,真正实现高效率的解码,同时功耗不能太高;另一方面就是兼容性问题不能太多,否则就和“显卡专用视频单元硬解码”没有区别了;最后就是流处理器单元的数量会不会影响这种解码方式的效率。
测试平台配置表
硬件平台
处理器 CPU
AMD Athlon X2 3600+ 1.9GHz
主板 Motherboard
NVIDIA MCP78芯片组主板
内存 Memory
海盗船 DDR2-800 2GB(1GB×2)
硬盘 HDD
Seagate Barracuda(希捷酷鱼) 7200.10 250GB
显卡 VGA Card
GeForce 9400GT 16sp
GeForce 9500GT 32sp
GeForce 9600GT 64sp
GeForce 9800GTX+ 128sp
GeForce GTX260+ 216sp
GeForce GTX285 240sp
GeForce GTX295 480sp
声卡 Audio
全部开启
散热器 Cooler
超频三 南海2 HP-1204X
电源 Power
Cooler Master 酷冷900W
操作系统
操作系统 OS
Windows XP sp3中文版
驱动程序
主板驱动 MB Drivers
NVIDIA Forceware 182.08WHQL版
显卡驱动 VGA Drivers
NVIDIA Forceware 182.08WHQL版
高清播放软件仍使用终极解码,因为目前最新的终极解码09春节版还未将1.9.5版的CoreAVC加入其中,所以我们先来介绍一下手动加入新版CoreAVC的方式以及实现CUDA加速的方式。
第8页:1.95版CoreAVC加入方式/CUDA加速方法
因为终极解码09春节版还未收录1.9.5版本的CoreAVC,所以用户需要将新版的CoreAVC替换掉现有的版本,才能实现CUDA加速。下面我们简单介绍一下替换和设置的方法。
首先是将新版本CoreAVC中的“CoreAVC.ax”文件提取出来,放到终极解码的“Codecs”目录下,覆盖原有文件。注意,“CoreAVC.ax”原文件名称可能是“CoreAVCdecoder.ax”,修改一下名称再进行操作。
在终极解码的控制中心中,我们有一个重要的操作步骤就是将CoreAVC的版本勾选到“1.8.5版本”上,因为我们1.9.5版覆盖的原有版本就是1.8.5版本(终极解码默认勾选的是1.5.0版)。截图中已经覆盖完成,现在已经是1.9.5版本了,只不过终极解码无法更新显示。另外关于CoreAVC的解码器设置不要在这里进行,同样是因为终极解码还无法自动更新的缘故。
新版CoreAVC 1.9.5的设置需要在kmp播放器的“滤镜”中进行(相应视频播放过程中才可以看到),打开“CoreAVC Video Decoder”进行设置。
下图才是CoreAVC 1.9.5版本的设置界面,如果你的NVIDIA显卡已经正确支持CUDA技术(不仅要硬件支持,也需要安装好支持开启CUDA技术的驱动,老驱动不支持),那就可以看到右下角出现了“启用CUDA加速”的选项,勾选上就可以采用CUDA技术利用显卡GPU的流处理器进行视频解码操作,而不勾选仍然是采用CPU软解码。
如果设置了让CoreAVC状态显示在桌面状态栏,那调用CoreAVC解码器后,在windows桌面的右下角会有专门的提示图标,如果启用CUDA加速,图标显示为绿色;而没启用CUDA加速,图标显示为蓝色。
说起来更新的方法很简单,其实就是将一个关键文件覆盖,同时注意在播放中的“滤镜”选项中进行相关的设置。下面我们进入测试环节。
第9页:兼容/性能测试 1)—720P/x264/mkv
下面我们首先进入兼容性和性能的测试,因为采用CUDA技术利用流处理器进行高清解码不通过DXVA,兼容性出现的概率较低,所以我们特意选择了一些以往用显卡硬解会出现问题的影片进行测试,看看利用CUDA技术的解码方式能否通过兼容性的测试。
影片信息介绍——:720P;x264编码;mkv封装;HDTV录制重新编码
[CPU软解码(CoreAVC 1.9.5 NO CUDA)]:播放没有问题,CPU占用率较高
[显卡视频单元硬解码(MPCVideo解码器)]:播放没有问题,CPU占用率很低
[显卡视频单元硬解码(CLAVC解码器)]:画面停止在第一帧
[显卡流处理器解码(CoreAVC 1.9.5 CUDA开启)]:播放没有问题,CPU占用率较低
几种解码方式的测试对比
CPU软解码
显卡硬解码
MPC解码器
显卡硬解码
CLAVC解码器
显卡sp单元解码
播放情况
完美
完美
画面停滞
完美
CPU占用
20%左右
5%以内
N/A
6%左右
第10页:兼容/性能测试 2)—1080P/H.264/avi
影片信息介绍——:1080P;H.264编码;avi封装;《亡命感应》电影片段
HYPERLINK "http://www.inpai.com.cn/doc/pic.aspx?pic=http://img.inpai.com.cn/article/2009/3/31/0f27f7d1-71ed-4177-9e9e-2d51debc21d8.jpg&id=92710" \t "_blank"
[CPU软解码(CoreAVC 1.9.5 CUDA关闭)]:播放丢帧,CPU占用率极高
HYPERLINK "http://www.inpai.com.cn/doc/pic.aspx?pic=http://img.inpai.com.cn/article/2009/3/31/113389cc-7f67-459b-bfa1-a635683767d8.jpg&id=92710" \t "_blank"
[显卡视频单元解码(MPCVideo解码器)]:播放画面出现严重色块,CPU占用率很低
HYPERLINK "http://www.inpai.com.cn/doc/pic.aspx?pic=http://img.inpai.com.cn/article/2009/3/31/c308d237-9b9a-443f-81c9-412520ee378a.jpg&id=92710" \t "_blank"
[显卡视频单元解码(CLAVC解码器)]:播放没有问题,CPU占用率很低
HYPERLINK "http://www.inpai.com.cn/doc/pic.aspx?pic=http://img.inpai.com.cn/article/2009/3/31/accba14e-524c-467d-96d3-d52010953dc4.jpg&id=92710" \t "_blank"
[显卡流处理器解码(CoreAVC 1.9.5 CUDA开启)]:播放没有问题,CPU占用率较低
几种解码方式的测试对比
CPU软解码
显卡硬解码
MPC解码器
显卡硬解码
CLAVC解码器
显卡sp单元解码
播放情况
丢帧
画面频出色块
完美
完美
CPU占用
接近100%
7%左右
7%左右
13%左右
第16页:三种解码方式CPU占用率横向对比(1)
影片基本资料
影片名称
The World Natural Heritage
中文译名
世界自然遗产:亚洲
影片载体
Blu-ray
编码格式
H.264
分 辨 率
1080P
出品国家
日本
上映时间
2007年
影片长度
120分钟
影片类别
纪录片
《世界自然遗产》仍然是目前解码难度最高的影片之一,CPU软解码影片的CPU占用率不用多说,完全的100%。使用显卡专用视频单元硬件解码,CPU占用率在10%左右(测试片段)。采用显卡流处理器解码视频,CPU占用率降低了非常多,仅比显卡视频单元硬解码略高一些。
横向比较一下,采用显卡流处理器解码视频时,除了16sp单元的9400GT(或同规格的8500GT)CPU占用率高一些以外,其它的显卡CPU占用率成绩非常接近,都在15%~16%之间,属于测试误差范畴之内。
第17页:三种解码方式CPU占用率横向对比(2)
影片基本资料
影片名称
Casino Royale
中文译名
007皇家赌场
影片载体
Blu-ray DVD
编码格式
H.264
分 辨 率
1080p
音频格式
DTS HD
出品国家
美国
发行公司
索尼娱乐
上映时间
2006年
影片长度
144分钟
影片类别
惊怵/冒险/动作
导 演
马丁·坎贝尔
主要演员
丹尼尔·克雷格
马德斯·米克尔森
伊娃·格林
凯特林娜·莫瑞诺
朱迪·丹奇
《007皇家赌场》的测试,因为CPU占用率曲线出现了不稳定情况,所以CPU平均占用率并未达到100%,但这并不能说明这款处理器能应付这部影片,CPU软解码出现了明显的丢帧现象。显卡视频单元解码影片占用率稳定在7%以下,依然是最具效率的解码方式。
至于显卡流处理器解码,同样出现了16sp单元的9400GT解码CPU占用率比其他显卡略高的情况,而32sp的9500GT及其更高级别的显卡都没有任何问题,CPU占用率也稳定在16%左右。
第18页:三种解码方式系统总功耗对比测试
影片基本资料
影片名称
The World Natural Heritage
中文译名
世界自然遗产:亚洲
影片载体
Blu-ray
编码格式
H.264
分 辨 率
1080P
出品国家
日本
上映时间
2007年
影片长度
120分钟
影片类别
纪录片
HYPERLINK "http://www.inpai.com.cn/doc/pic.aspx?pic=http://img.inpai.com.cn/article/2009/3/31/100f00da-404d-4d87-9220-6b4245bf7e88.png&id=92710" \t "_blank"
功耗测试我们挑选了几款代表性的显卡进行测试。和我们预想的结果相同,CPU软解码的功耗最高,显卡视频单元硬解码功耗最低,显卡流处理器解码功耗介于其中。
相比较而言,显卡的档次越低,采用流处理器解码方式的节能效果越明显,因为高档显卡本身的运行功耗较高,相对节能的比例不明显。从这里推断,集成主板(比如MCP78或者MCP7A)的节能效果应该是最好的。
第19页:兼容好占用率低 最佳折中方案诞生
◆ 测试最后总结
关于兼容性:我们特意挑选了多部影片对这三种解码方式进行考察,事实证明,CPU解码依然是最完美的方案,任何其它解码方式失败,都会回归到CPU软解码的方式上,这一点确信无疑。而显卡视频单元硬解码的方式是目前遭遇问题最多的解码方式,无论MPCVideo解码器还是CLAVC解码器,都可能遭遇硬解码失败的情况,两种解码方式同时出现问题的可能性也存在。
而我们本次测试的第三种方案,也就是流处理器解码高清视频的方式,则非常接近CPU软解码的完美兼容性,至少在我们实验的近百部影片中至今尚未遇到无法兼容的影片,这与它的运作方式有关,前面我们也提到过,调用DXVA是造成显卡硬解码出现问题的最大“功臣”,而流处理器解码方式显然没有DXVA严格的要求。
关于CPU占用率和功耗:CPU软解码的最大弊端就是CPU占用率高,如果处理器不够强劲,首先会导致有些影片无法流畅播放,其次还导致了功耗的居高不下。显卡硬解码依然是目前解码高清影片CPU占用率最低的方式,因为这一点,以及显卡专用视频单元本身耗电很小的原因,所以其功耗也最低。流处理器解码高清的CPU占用率很低,基本不依赖处理器,从本次测试的成绩推断,即便是低端单核处理器,采用流处理器解码也没有丝毫问题,因为采用流处理器的缘故,所以其功耗略高,但是仍然低于CPU解码的方式。
关于流处理器解码方式的效率:从测试结果来看,流处理器的数量对这种解码方式的影响比较小,我们仅能从16个sp和32个sp单元中发现明显的性能区别,而高端显卡更多的流处理器并未能再降低CPU的占用率。对此我们分析,最大可能是CoreAVC这款解码器从根本的编程结构上就限制了sp流处理器的使用数量,比如只能用到32个sp,所以更多的sp流处理器不会造成解码性能的进一步提升。
我们随后进一步了解到,CoreAVC解码器确实只能利用到显卡部分流处理器,而并非所有的流处理器。原因就是对于视频硬件解码的负载来说,只需要利用到部分流处理器就可以保证处理的效能,限制流处理器的使用数量还可以保证节能的需要。)
到了本文最后总结的时候了,我们首先再次对比几种高清解码方式的优势与不足,其中加入了今天我们详细介绍的第三种解码方式:“采用CUDA技术利用显卡流处理器对H.264格式高清视频解码”。
高清解码方式的对比
CPU软解码
显卡流处理器解码
显卡视频单元硬解码
优势
完美的兼容性,对视频的编码、封装格式没有要求,播放器设置简单、一劳永逸。
兼容性极佳,对视频的编码、封装格式基本没有要求。
同时,CPU占用率较低,对显卡的要求也并不大。
功耗控制不错。
CPU占用率极低,让高清播放设备成本很低,同时更为静音、更加节能。
不足
CPU占用率高,导致硬件系统的投入成本高,还会带来散热、功耗等问题。
因为解码器的限制,目前还无法借助CUDA技术解码VC-1等编码的影片。
兼容问题时常出现,对视频的编码和封装格式相对要求更严格,与操作系统、驱动程序乃至系统本身的其他软件都可能出现不兼容问题,从而导致高清视频无法播放或者画面破损等问题。
看完这个总结,我想读者应该明白我们为什么称这新出现的第三种H.264解码方式为“最佳折中方案”,因为其虽然在解码效率和功耗控制上仍未能超越最佳的“显卡硬解码”方式,但是已经十分接近,而且其有基本完美的兼容效果,可以消除显卡硬解码出现的各种兼容问题。如果高清用户恰好有类似的硬件配置,完全可以设定到CUDA加速的方式,从而换来近乎一劳永逸的H.264解码结果,无需因为兼容问题的出现而频繁在各种其它解码方式之间切换和尝试。
如果说这种解码方式的缺陷,那就是还无法实现解码VC-1等编码格式的高清影片,这与CoreAVC解码器本身只是针对H.264解码的根本特性有关。如果有另一种支持VC-1等其他编码格式的解码器也能开始利用到CUDA,想必会让这个领域的路越走越宽。对于CUDA技术本身,这也是一项与普通用户关系最密切的应用之一,对于推动CUDA技术在普通消费者之间的认知和使用起到了很关键的作用。另外,因为CUDA技术只有NVIDIA的DX10显卡才具备,所以本文涉及的所有内容,与那些NVIDIA的老显卡以及所有的ATI显卡无缘,相信这部分用户也会因此感到遗憾,那只能留待今后软件的继续发展吧,比如CoreAVC解码器会不会在某个时候也能加入对ATI显卡stream流处理技术的支持,不过在时间上就没有任何把握了,尽管我们希望这一天也能到来。
至于这种解码方式对高清用户在组建HTPC时候造成的影响,本文还是卖个小小的关子,因为本文的测试并没有涉及整合主板(比如MCP78或MCP7A),也请读者继续关注硬派网,我们会在最近进行NVIDIA相关整合主板的测试,以验证这第三种解码方式的性能和实用性。