[家庭影院/碟机] DXVA2:明明白白GPU硬解高清 |
也不知道到底算不算原创,这些是俺1月12日整理了很多资料放在博客上的,后来看见几次有人问硬解的问题,想想还是干脆贴给大家方便吧。(BLOG里面
http://blog.sina.com.cn/s/blog_543400a60100o6kf.html 还有“精研事务所”网友论证硬解的“专业态度”,佩服啊)欢迎DEBUG! M$制订的接口规范DirectX Video Acceleration是一个具有“分级”的标准,不仅包括了影响CPU占用率的解码视频, 还有各种后期处理运算,比如图像缩放,色彩空间转换,反交错等。DXVA 1.0规范里最早定义了MPEG2和WMV硬件解码能力,在DXVA 2.0里又增加了H.264和VC-1硬件解码能力。 DXVA并不是只有“支持”、“不支持”两个档次,显卡硬件支持DXVA规范,不代表就实现了里面所有的功能。DXVA强制规定:无论什么功能,显卡驱动的DXVA部分代码要通知系统,这项功能它实现了还是没有实现,不需要系统自己去测试。DXVA 2.0标准为显卡的解码加速能力分出了不同的档次(能力级别)。比如解码H.264的能力被分为了A~F共6个等级,其中A为最低,F为最高。 列表——DXVA2_ModeH264_A (DXVA2_ModeH264_MoComp_NoFGT) DXVA2_ModeH264_B (DXVA2_ModeH264_MoComp_FGT) DXVA2_ModeH264_C (DXVA2_ModeH264_IDCT_NoFGT) DXVA2_ModeH264_D (DXVA2_ModeH264_IDCT_FGT) DXVA2_ModeH264_E (DXVA2_ModeH264_VLD_NoFGT) DXVA2_ModeH264_F (DXVA2_ModeH264_VLD_FGT) DXVA2_ModeMPEG2_IDCT DXVA2_ModeMPEG2_MoComp DXVA2_ModeMPEG2_VLD DXVA2_ModeVC1_A (DXVA2_ModeVC1_PostProc) DXVA2_ModeVC1_B (DXVA2_ModeVC1_MoComp) DXVA2_ModeVC1_C (DXVA2_ModeVC1_IDCT) DXVA2_ModeVC1_D (DXVA2_ModeVC1_VLD) DXVA2_ModeWMV8_A (DXVA2_ModeWMV8_PostProc) DXVA2_ModeWMV8_B (DXVA2_ModeWMV8_MoComp) DXVA2_ModeWMV9_A (DXVA2_ModeWMV9_PostProc) DXVA2_ModeWMV9_B (DXVA2_ModeWMV9_MoComp) DXVA2_ModeWMV9_C (DXVA2_ModeWMV9_IDCT) 硬件解码的加速能力的级别基本上分为4个,从高到底分别为: VLD(Variable Length Decoding / 变字长解码):用于处理视频比特流(BitStream) IDCT(Inverse Discrete Cosine Transform / 逆离散余弦变换):用于处理帧内压缩(Intraframe compression) MoComp(Motion Compensatiom / 运动补尝):MC处理帧间压缩(Interframe Compression) PostProc:显示后处理,比如Deblocking去码滤波操作。早期的GeForce 6/7或Radeon X1000显卡在开启显卡硬件加速的状态下就会关闭解码去块滤波操作Deblocking,这时播放一些影片会看到较明显的马赛克现象 VLD级别的解码包含IDCT, MoComp和PostProc;IDCT级别的解码包含MoComp和PostProc;MoComp级别的解码包含PostProc。显卡能够支持越高级的加速能力,就能更大幅度地减轻对 CPU 资源的占用。 DXVA 1.0可在覆蓋合成器(Overlay Mixer)或VMR 7/9運行。DXVA 2.0,僅在Windows Vista、Windows 7以及之後的微軟操作系統中可用,與Media Foundation合併,並且在MF(Media Foundation)中使用的是增強型視頻渲染器(Enhanced Video Renderer/EVR)。 由於DXVA的限制,所使用的渲染器必須遵守以下規則: Windows XP用戶,必須使用覆蓋合成器(Overlay Mixer),VMR 7或VMR9作為視頻渲染器(Video Renderer) Windows Vista/7用戶,必須使用增強型視頻渲染器(Enhanced Video Renderer/EVR)或EVR custom renderer 对于H.264,还有一个FGT(电影胶片质感技术)的额外技术,所谓胶片感,在不牺牲压缩能力的同时保持视频源特有的颗粒信息。未来的H.264编码器将会有FGT的开关选项,比如针对录像摄影素材则将FGT关闭,而对于胶卷摄影,出于胶卷的特性则将FGT打开,以保持特有的颗粒信息。而在影碟机一方,其解码器将识别颗粒信息,并在噪音滤波器中应用到H.264的视频流上。对 WMV9 的支持当中,有一个级别是“PostProc(Post Processing)”,中文是“显示后处理”,它是最低级的 DXVA。 如果想详细了解自己显卡的DXVA能力靠厂家的宣传是靠不住的,我们需要一个小工具 dxva checker 它的最新版是2011-1-9发布的Version 2.4 http://bluesky23.yu-nagi.com/en System Requirements:Windows 7/Vista/XP,必须安装64位或者32的 Runtime:Microsoft .NET Framework 2.0 Microsoft Visual C++ 2008 SP1 Runtime 运行它就可以显示你的DXVA档次 第一列:硬件加速的类型,大部分UUID都由DXVA2.0规范所定义,但显示长长一串数字的是DXVA2.0未定义的,可能是厂商自定义的专用API 第二列:新版的dxva checker只显示加速版本。 以前还列出了硬件加速使用的color space。“NV12”是指视频输出的色系(其它的颜色系还有 YUV12、YUY 等)NV12 是用于 DirectX VA 的首选 4:2:0 像素格式,Media SDK的decoder、vpp、encoder对输入输出格式有着严格的限制,现在仅仅支持NV12,其它的如YV12格式要转化为NV12格式。 第三列是指硬件加速支持的分辨率,分别测试480P(720*480), 720P(1280*720)和1080P(1920*1080), 测试成功,就显示相关分辨率。不成功就不显示。 官方文档 http://msdn.microsoft.com/en-us/library/cc307941(VS.85).aspx |
|
现在用到硬解的比较少了 呵呵 不过上网本肯定用的到
另外现在完美者解码推荐的几个默认设置都不错 只有 选择适合自己机器的方案就可以了 不像以前要很复杂的 设置了 |
|
{:2_127:}真专业....我现在一看这么专业的文字心里就没底的很==
佩服佩服........... |
楼上2位是在寒碜我吧  {:5_535:}
满头大汗啊! 这个还好意思叫“专业”……玩高清的要笑死俺了  {:5_508:} |