繁体   English   中英

如何从H.264 NV12 IMFSample输出渲染为DirectX11纹理?

[英]How to render to a DirectX11 texture from H.264 NV12 IMFSample output?

有没有很好的示例说明如何呈现H.264解码器的IMFSample输出? 我的方案使用4K分辨率的H.264流,而我定位的PC将仅使用DXGI缓冲区接受1080p。 但是H.264解码器可以处理4K,因此我需要找到一种方法将NV12 IMFSample直接提供给DirectX 11渲染器。 我已经尝试使用DX11VideoRenderer示例,但是由于此特定的IMFSample没有IMFDXGIBuffer接口,因此它失败了。

看起来在DX11VideoRenderer中 ,输入IMFDXGIBuffer是NV12类型,可以在硬件中成功呈现。 因此,逻辑上应该接受NV12类型的非DXGI缓冲区吗?

也许我需要用NV12类型创建ID3D11Texture2D纹理或资源? 我找到了有关如何从文件创建纹理的示例,但没有找到有关如何从样本创建纹理的示例,这似乎更加有用。 如果我可以创建NV12纹理,如何SysMemPitch SysMemSlicePitchD3D11_SUBRESOURCE_DATA结构中的SysMemPitchSysMemSlicePitch值?

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

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

D3D11NV12Rendering

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM