1

来自https://msdn.microsoft.com/en-us/library/windows/desktop/dd797815%28v=vs.85%29.aspx

在约束中,您读到“DXVA 加速的最大保证分辨率为 1920 × 1088 像素;在更高的分辨率下,如果底层硬件支持,则使用 DXVA 进行解码,否则使用软件进行解码。”

有没有办法检测解码是在软件中完成的?

在尝试解码 4K H264 视频时,我们遇到了 AMD 图形控制器的问题。

我们知道硬件不支持 4K 解码,理论上它应该回退到软件。然而,我们发现不管它应该做什么,我们都会得到很多损坏或黑帧。

我希望我们可以检测到 DXVA 是否已经退回到 SW 解码,在这种情况下,我们根本不会尝试使用 DXVA,而是使用完整的软件路径。

谢谢

4

2 回答 2

1

H264 MFT 没有公开是否使用 DXVA 进行解码。

它用于IDirectXVideoDecoderService::CreateVideoDecoder创建 DXVA 解码器,因此您可以手动调用此函数以查看它是否成功。

我在Mozilla bug 1193547中为此添加了完整的解释(和 apitrace 日志)

于 2015-08-13T18:14:48.680 回答
0

您是否尝试过通过 mftrace(包含在 Windows SDK 中)运行您的应用程序?mftrace 输出非常详细,通常会让您知道哪个 MFT 用于编码。当硬件编码可用时,您可能能够发现正在使用的不同 MFT。

例如,对于 H264 编码,英特尔 MFT 是一种硬件编码器,当系统硬件支持时,将使用它而不是标准的 Microsoft 编码器。

于 2015-03-19T08:50:27.767 回答