使用 DX11 和 DXVA2

Posted

技术标签:

【中文标题】使用 DX11 和 DXVA2【英文标题】:Using DX11 and DXVA2 【发布时间】:2016-01-08 20:27:39 【问题描述】:

我正在尝试 测试解码 h264/h265 视频(只有一个 iframe)。这是在 Windows 7 上,所以我可能必须在 2 个 d3d11 设备之间进行互操作,一个具有 11.1 功能集,另一个具有 9.3 功能集。我的问题是,由于严重缺乏加载 h264 文件并使用 DXVA 对其进行解码的样本,我想知道是否有关于如何布局数据以输入 DXVA 进行解码的指南?我已经阅读了How do I use Hardware accelerated video/H.264 decoding with directx 11 and windows 7? 和 https://msdn.microsoft.com/en-us/library/windows/desktop/hh162912(v=vs.85).aspx,但也没有任何关于如何执行上述操作的指南。

谢谢

【问题讨论】:

【参考方案1】:

如果您想要一个工作示例来了解如何将数据输入 DXVA,请查看此处:MFNode。在 MFTDxva2Decoder 下,您将看到如何提供数据。它适用于 mpeg1/2 文件格式,但同样适用于 H264(当然有阴影)。

编辑

查看我的回复:How do I use Hardware accelerated video/H.264 decoding with directx 11 and windows 7?

【讨论】:

这已经过期了,但感谢您的回复。你知道 DXVA2 是否与渲染管道并行运行吗?即,我可以在 GPU 着色器管道上使用渲染命令,同时使用 DXVA,并且不会让它们在性能方面相互影响吗? 是的,DXVA2 使用来自 GPU 的视频处理器:它不同于着色器管道。这些进程不会相互影响并并行工作,但如果您在两者之间共享纹理,则需要一些锁定机制。

以上是关于使用 DX11 和 DXVA2的主要内容,如果未能解决你的问题,请参考以下文章

DXVA2解码数据用texture纹理渲染

Qt之dxva2硬解码

dx12环境是啥意思

Windows Media Player 中的 DXVA2 解码器 MFT 与多显示器显示

DX11 恒定缓冲区持久性

基于FFmpeg的Dxva2硬解码及Direct3D显示