【发布时间】:2020-11-10 17:14:44
【问题描述】:
我想使用 DirectX 12 将 H264 文件的每一帧加载到纹理中并进行渲染。然而,关于这样做的信息很少甚至没有,而且微软网站的表面文档也很有限。
Media Foundation 有大量示例并提供支持硬件的解码。媒体基金会是 DirectX 的包装器,还是在做其他事情?
如果不是,与 DX 12 方法相比,Media Foundation 等效方法的优化程度要低多少?
本质上,Media Foundation 和 DirectX12 视频解码之间的最大区别是什么?
我已经在我的引擎中使用 DirectX 12,所以这是专门针对 DX12 的。
提前致谢。
【问题讨论】:
-
在媒体基金会的情况下,它正在做的是使用转换 (MFT),如果你愿意的话,就像一个插件(编码器、解码器、转换器等)。通常,它会自动使用显卡驱动程序(基本上是 Amd、Intel、Nvidia)提供的启用硬件的转换。您也可以明确地使用它们(或者也可以使用 Windows one - 软件)。这些转换本身通常是 MF 的包装器,使用内部供应商二进制文件。我没有使用过 DirectX 12 视频,从文档中,不清楚它在内部使用的是什么
-
同样在 MF 的情况下,您通常可以将转换与 DirectX 连接,所以一切都可以在硬件中发生(RGB 视频 -> nv12 -> h264):docs.microsoft.com/en-us/windows/win32/medfound/… 再一次,这里什么都没有那个关于 DirectX12 的文档
-
谢谢!是的,这对于转换是有道理的。不幸的是,表面在 DirectX12 中不作为一个概念存在,这意味着无法使用文章中描述的 D3D Aware 内容。我想我暂时只进行媒体基础硬件转换。 DX12 视频真的不够。
标签: c++ video uwp ms-media-foundation directx-12