搜索新闻

高清播放再次革命!CUDA解码方案评测

摆脱DXVA!CoreAVC支持CUDA解码
来源:PCPOP 更新日期:2009-07-10 作者:佚名
内容导航:  分页浏览 | 全文浏览

摆脱DXVA!CoreAVC支持CUDA解码

    为什么会出现如上一页中描述的那些问题呢?要回答这个问题,我们还得从一个叫做DXVA的东西谈起。因为,DXVA工作与否正是决定当前视频是否在使用硬件解码的标志。

四大编码全攻克!高清硬解码设置宝典

“DXVA”全称是DirectX VIDEo AccelerATIon(硬件视频加速接口),它是一个由微软和图形芯片厂商联合定义的一个硬件接口规范,就好象DirectX 3D是游戏开发的应用程序接口一样,DXVA就是视频硬件解码的程序接口,显卡的视频单元必须满足DXVA的规范和要求才能实现相应的功能。

DXVA_ModeH264_A H264_A
DXVA_ModeH264_B H264_B
DXVA_ModeH264_C H264_C
DXVA_ModeH264_D H264_D
DXVA_ModeH264_E H264_E
DXVA_ModeH264_F H264_F
DXVA_ModeVC1_A VC1_A
DXVA_ModeVC1_B VC1_B
DXVA_ModeVC1_C VC1_C
DXVA_ModeVC1_D VC1_D

    不过需要注意的是,DXVA是一个具有“分级”特性的标准。简单的理解就是硬件支持DXVA的级别,而不仅仅只有“支持”与“不支持”两个档次。从上面的表中我们可以看出,DXVA对H.264视频硬件加速有6种级别,而对于VC-1视频有四种级别。

    DXVA不仅仅对显卡的支持度进行了分级,而且对解码器的支持度也进行了分级,也就是说解码器即使支持DXVA,也不一定能够实现DXVA中所有的功能。而由于目前视频封装格式非常混乱,就极容易出现一些不可预知的问题。如果对DXVA这个标准进行评价的话,既有好评也有坏评,好评是微软直接提供了硬件加速与解码器之间的桥梁,而坏评就是其要求十分严格,导致我们前面所说的一些问题

   前面我们说到,DXVA是导致使用GPU硬解码出现问题的根本原因,如果要解决这个问题,最好的办法是脱离DXVA,比如CPU解码就不会出现什么问题,而且画质也非常好,这就是因为CPU软解码不需要DXVA(DXVA是硬件加速标准)。那么,有没有办法利用显卡模拟CPU进行解码呢?——CUDA做到了这一点。

    对于CUDA这个名词相信各位都不会陌生,简单的说就是NVIDIA显卡的通用计算技术,CUDA可以直接使用GPU来进行CPU很难完成的复杂运算,理论上来说可以运行任意CPU运算的程序。而且由于CUDA编程语言和C语言基本没有区别,所以CUDA很快就被全世界各个行业所接受。

    在视频领域,我们之前经常都说到了利用CUDA进行视频编码,比如我们之前测试过的Cyberlink MediaShowvReveal MotionDSPArcSoft TotalMedia Theatre以及MediaCoder等。但是视频解码一直由于GPU内有专门的运算模块,导致这一领域几乎无人问津。而日前,CoreAVC推出了1.9.x版本的解码器,正式加入了CUDA视频解码的功能。


CoreAVC官方网站上1.9.5版本的广告已经赫然出现了CUDA标志

    CoreAVC是非常流行的H.264解码器之一,几乎所有集多种解码器于一身的播放器都带有CoreAVC解码器。今年2月份,CoreAVC率先发布了1.9.0版本的解码器,首次支持CUDA解码H.264视频,不过由于当时存在一些播放色块的问题,很快CoreAVC就推出了1.9.5版本的解码器,从此H.264高清视频解码正式迈入CUDA时代。

   我们知道,CUDA是一个完整的NVIDIA GPGPU解决方案,它直接提供了硬件的访问接口,而不必通过图形API来实现GPU硬件的访问。也就是说,CUDA从某种意义上模拟了CPU的计算。而使用CUDA进行高清视频解码的原理也就不难理解了!实际上,使用CUDA进行高清视频解码,就是通过调用GPU中庞大的流处理器资源,进行视频解码运算,并不是调用GPU中专门的视频处理单元。

    视频解码的运算量虽然不高,但是对处理器的并行处理效率有很高的要求,这就是为什么多核心CPU高清视频解码的效率比单核高很多的原因。而使用CUDA进行解码,GPU中有很多的流处理器资源可以调用,所以使用CUDA进行视频解码运算,简直是轻而易举。而且由于运算量不高,解码计算基本不可能让GPU全速工作,所以在功耗方面也能得到有效的控制。

    另外,由于采用CUDA架构,GPU视频解码不再需要通过DXVA进行硬件加速,所以可以彻底脱离DXVA的各种限制,从某种意义上模拟CPU进行运算,不仅可以获得非常完美的兼容性,而且画质也和CPU软解没有什么区别,设置起来也更加方便。


MediaCoder也只有编码过程采用CUDA技术

    再来我们还可以谈到CUDA视频转码这件事情上,我们知道视频的转码过程实际上就是解码——编码的过程,而之前部分即使采用CUDA进行视频转码,但解码过程仍然是CPU来完成,只有编码过程由CUDA来完成,这样实际上还是没有完全利用到GPU的优势。

 标签:
广告联系:010-82755684 | 010-82755685 手机版:m.pjtime.com官方微博:weibo.com/pjtime官方微信:pjtime
Copyright (C) 2007 by PjTime.com,投影时代网 版权所有 关于投影时代 | 联系我们 | 欢迎来稿 | 网站地图
返回首页 网友评论 返回顶部 建议反馈
快速评论
验证码: 看不清?点一下
发表评论