![](/img/trans.png)
[英]Color conversion from DXGI_FORMAT_B8G8R8A8_UNORM to NV12 in GPU using DirectX11 pixel shaders
[英]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
SysMemSlicePitch
的D3D11_SUBRESOURCE_DATA
结构中的SysMemPitch
和SysMemSlicePitch
值?
任何帮助将非常感激! 谢谢。
我能够找到一个完整的示例,将NV12样本呈现到屏幕上。 尽管在渲染自己的示例图像时存在一些简单的跨步计算错误,但实际的渲染代码确实可以正常工作。 它似乎是一个旧的Microsoft示例,我找不到任何其他信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.