0

有没有什么好的例子可以展示如何渲染IMFSampleH.264 解码器的输出?我的场景使用 4K 分辨率的 H.264 流,而我的目标 PC 将只接受使用 DXGI 缓冲区的 1080p。但是 H.264 解码器将处理 4K,因此我需要找到一种方法将 NV12IMFSample直接馈送到 DirectX 11 渲染器。我已经尝试过使用DX11VideoRenderer示例,但由于这个特定IMFSample的没有IMFDXGIBuffer接口而失败。

看起来在DX11VideoRenderer中输入IMFDXGIBuffer是 NV12 类型,并且可以在硬件中成功渲染。因此,NV12 类型的非 DXGI 缓冲区也应该是可以接受的,这似乎是合乎逻辑的?

也许我需要创建一个ID3D11Texture2DNV12 类型的纹理或资源?我找到了如何从文件创建纹理的示例,但没有找到如何从样本创建纹理的示例,这似乎更有用。如果我可以创建 NV12 纹理,如何找出 NV12 结构中的SysMemPitchSysMemSlicePitchD3D11_SUBRESOURCE_DATA

任何帮助将非常感激!谢谢你。

4

1 回答 1

1

我能够找到一个将 NV12 样本呈现到屏幕上的完整示例。尽管在渲染自己的示例图像时存在一些简单的步幅计算错误,但实际渲染代码确实可以正常工作。它似乎是一个旧的 Microsoft 示例,我找不到任何其他信息。

D3D11NV12渲染

于 2018-06-15T13:26:49.647 回答