用于UWP的Unity插件中使用DirectX11的硬件加速H264解码

罗希特

我为UWP应用程序构建了一个Unity插件,该插件将原始的h264数据包转换为RGB数据并将其渲染为纹理。我已经使用FFMPEG来做到这一点,并且效果很好。

int framefinished = avcodec_send_packet(m_pCodecCtx, &packet);
framefinished = avcodec_receive_frame(m_pCodecCtx, m_pFrame);
// YUV to RGB conversion and render to texture after this

现在,我试图转向使用DirectX11 DXVA2.0的基于硬件的解码。

使用此方法:https : //docs.microsoft.com/zh-CN/windows/desktop/medfound/supporting-direct3d-11-video-decoding-in-media-foundation

我能够创建一个解码器(ID3D11VideoDecoder),但是我不知道如何向其提供原始H264数据包以及如何获取YUV或NV12数据作为输出。(或者如果可以将输出直接呈现到纹理,因为我可以得到ID3D11Texture2D指针)

所以我的问题是,如何将原始的h264数据包发送到此解码器并从中获取输出?

另外,这是用于实时操作,因此我正在尝试实现最小延迟。

提前致谢!

VuVirt

由于您已经使用FFMPEG完成了此操作,因此我建议您直接使用FFMPEG的dx11硬件解码。

检查硬件解码FFMPEG示例以获取详细信息:github.com/FFmpeg/FFmpeg/blob/master/doc/examples/hw_decode.codec

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章