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 を使用しているかどうかを公開しません。

DXVA デコーダーの作成に使用IDirectXVideoDecoderService::CreateVideoDecoderされるため、この関数を手動で呼び出して、成功するかどうかを確認できます。

Mozilla バグ 1193547に、これに関する完全な説明 (および apitrace ログ) を追加しました。

于 2015-08-13T18:14:48.680 に答える
0

mftrace (Windows SDK に含まれています) を介してアプリケーションを実行してみましたか? mftrace の出力は非常に詳細であり、通常、エンコードに使用されている MFT が通知されます。ハードウェア エンコーディングが利用可能な場合、使用中の別の MFT を見つけることができる場合があります。

たとえば、H264 エンコーディングでは、ハードウェア エンコーダーである Intel MFT が、システム ハードウェアでサポートされている場合、標準の Microsoft エンコーダーの代わりに使用されます。

于 2015-03-19T08:50:27.767 に答える