c# - 如何判断 DXVA 解码器是否已退回到软件解码

标签 c# c++ video ms-media-foundation dxva

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

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

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

我们在尝试解码 4K H264 视频时遇到 AMD 图形 Controller 问题。

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

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

谢谢

最佳答案

H264 MFT 不会暴露它是否使用 DXVA 进行解码。

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

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

关于c# - 如何判断 DXVA 解码器是否已退回到软件解码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29137875/

相关文章:

c# - Async/Await 或 Task.Run 在控制台应用程序/Windows 服务中

c# - ICustomTypeDescriptor、TypeDescriptionProvider、TypeConverter 和 UITypeEditor

C++ 代码库从 MFC 重写为 *nix

C++ sfml 在窗口打开后立即接收关闭事件

video - "Man in the middle"驱动程序?

C# P2P聊天应用程序设计

c# - 在 C# .NET 中使用操作系统的文件类型镜像

c++ - GCC 消耗太多内存!!图形工具

javascript - 使用 Javascript 从视频文件中提取地理标签

video - AVFoundation 和视频效果