关于 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 扩展:
- H.264/AVC 解码的 DXVA 规范
- H.264/MPEG-4 AVC 多视图视频编码 (MVC) 的 DXVA 规范,包括立体声高调功能
- MPEG-1 VLD 和组合 MPEG-1/MPEG-2 VLD 视频解码的 DXVA 规范。
- 适用于 MPEG-4 第 2 部分视频解码的主机外 VLD 模式的 DXVA 规范
- Windows Media Video® v8、v9 和 vA 解码的 DXVA 规范(包括 SMPTE 421M“VC-1”)
- H.264/MPEG-4 可伸缩视频编码 (SVC) 主机外 VLD 模式解码的 DirectX 视频加速 (DXVA) 规范
- VP8 和 VP9 视频编码的 DirectX 视频加速规范
DXVA 1 和 DXVA 2 使用相同的数据结构进行解码。 但是,配置解码会话的程序已更改。 DXVA 1 使用“探测和锁定”机制,其中主机解码器可以先测试各种配置,然后再在加速器上设置所需的配置。 在 DXVA 2 中,加速器返回可支持的配置列表,主机解码器从列表中选择一个配置。 下面的部分将提供详细说明:
相关主题