关于 DXVA 2.0

DirectX 视频加速 (DXVA) 是一个 API 和相应的 DDI,用于通过硬件加速来加快视频处理速度。 软件编解码器和软件视频处理器可以使用 DXVA 将某些 CPU 密集型操作卸载到 GPU。 例如,软件解码器可以将反离散余弦变换 (iDCT) 卸载到 GPU。

在 DXVA 中,图形硬件驱动程序会实现一些解码操作。 这组功能称为加速器。 其他解码操作由用户模式应用程序软件实现,称为主机解码器软件解码器。 (术语主机解码器软件解码器是等效的)。加速器执行的处理称为主机外处理。 通常,加速器使用 GPU 来加快某些操作的速度。 每当加速器执行解码操作时,主机解码器必须传达给加速器缓冲区,其中包含执行操作所需的信息

DXVA 2 API 需要 Windows Vista 或更高版本。 在 Windows Vista 中仍支持 DXVA 1 API 以实现后向兼容性。 提供的仿真层可在 API 的任一版本与 DDI 的相反版本之间进行转换:

  • 如果图形驱动程序符合 Windows 显示驱动程序模型 (WDDM),则 DXVA 1 API 调用将转换为 DXVA 2 DDI 调用。
  • 如果图形驱动程序使用较旧的 Windows XP 显示驱动程序模型 (XPDM),则 DXVA 2 API 调用将转换为 DXVA 1 DDI 调用。

下表显示了每个 DXVA API 版本的操作系统要求以及支持的视频呈现器。

API 版本 要求 视频呈现器支持
DXVA 1 Windows 2000 或更高版本 Overlay Mixer、VMR-7、VMR-9(仅 DirectShow)
DXVA 2 Windows Vista EVR(DirectShow 和 Media Foundation)

 

在 DXVA 1 中,软件解码器必须通过视频呈现器访问 API。 不调用视频呈现器无法使用 DXVA 1 API。 DXVA 2 消除了这一限制。 使用 DXVA 2,主机解码器(或任何应用程序)可以通过 IDirectXVideoDecoderService 接口直接访问 API。

DXVA 1 文档介绍了用于以下视频标准的解码结构:

  • ITU-T Rec. H.261
  • ITU-T Rec. H.263
  • MPEG-1 视频
  • MPEG-2 主个人资料视频

下面的规范定义了其他视频标准的 DXVA 扩展:

DXVA 1 和 DXVA 2 使用相同的数据结构进行解码。 但是,配置解码会话的程序已更改。 DXVA 1 使用“探测和锁定”机制,其中主机解码器可以先测试各种配置,然后再在加速器上设置所需的配置。 在 DXVA 2 中,加速器返回可支持的配置列表,主机解码器从列表中选择一个配置。 下面的部分将提供详细说明:

DirectX 视频加速 2.0

DXVA 1.0 规范