当前位置: 主页 > 应用视频 > 本地视频播放 > 硬件加速DXVA原理及低端设备流畅播放HDTV方法(3)

硬件加速DXVA原理及低端设备流畅播放HDTV方法(3)

2009-03-30   www.av110.net / 整理 点击: 标签:HDTV 硬件加速 DXVA
  

四、DXVA的几点补充说明

  DXVA是接口规范,显卡硬件支持DXVA规范,不代表就实现了里面所有的功能,但是肯定的一点是,无论什么功能,显卡驱动的DXVA部分代码一定会告诉应用程序,这项功能它实现了还是没有实现,这是DXVA规范强制性要求的。好处是应用程序不需要自己花费时间和精力去测试显卡有没有实现这项功能。

  解码器支持DXVA规范,不代表就能利用DXVA规范里面所有的功能组合,它可以选择自己有能力支持的,或者想要支持的那些功能组合,其他功能组合也许就放弃了。还有,某显卡虽然表示支持某种能力,但如果解码器认为这个能力的支持不够稳定,容易导致系统崩溃或错误,它也可以放弃这种能力。

  按照DXVA规范,硬件解码加速有3种级别
  MC 加速
  IDCT加速(含MC)
  VLD加速(含MC+IDCT)

  硬件支持任何一种组合都算得上是DXVA硬件加速。即便连MC都不支持,只要老老实实交待,也算符合DXVA规范。

  绝大多数显卡都支持IDCT加速。少数显卡能支持VLD(比如S3), 少数显卡只能支持MC(如NVIDIA老卡)
同时支持几个不同的加速模式,工作量不小。解码器开发的时候如果考虑到投入产出比,一定会支持IDCT加速,但VLD加速和MC加速可能就会放弃。这也是为什么很多人发现只有在MC+IDCT的显卡上才能开启硬件加速的原因。如果解码器支持MC加速,那么只有MC的显卡也可以使用硬件加速了。NVIDIA PureVideo Decoder肯定可以支持MC加速。

  另外,从某些资料里,GF4TI显卡硬件声称支持IDCT, 但硬件支持此功能不见得就代表这个功能很容易被应用程序使用(按照DXVA的规范),即便能被使用,不见得驱动程序的实现就非常稳定,让应用程序敢于使用。比如3寸软盘声称能存储数据,但我现在根本不敢用,因为坏的太快了。

  关于DXVA 硬件加速解码的框图,从DXVA 官方文档里摘出来。

  我的理解:
  Host指的是CPU和操作系统,Accelerators是显卡GPU。
  二者通过PCI/AGP/PCIE总线交换数据。

  CPU把压缩视频数据(读文件->分离器)通过总线送到显卡里的显存video data buffer。这部分显存是不显示在屏幕的。CPU要求GPU去执行解码,然后GPU就会运用自己的 MC,IDCT电路开始解码,得到原始(未压缩)视频数据。由于视频数据压缩算法用到了很多帧间压缩技术,如I,B,P帧,因此显存里需要保留若干份原始数据,DXVA文档里提到至少需要4份,5个以上更好。未压缩视频数据的格式可以为YUY2。UYVY, YV12, IYUV, NV12, NV21, IMC1~IMC4等。

  这是摘自GPU视频处理的一幅图片,介绍的是NV4X的流程,但应该具有普遍意义。绿色的部分是由GPU完成的(当然是指硬件加速时候)

顶一下
(2)
100%
踩一下
(0)
0%
精彩推荐