ビデオのレンダリングに DirectShow を使用するアプリケーションの修正を任されています。古いアプリケーションは正常に動作しますが、古くなっています。
私はゲームのバックグラウンドを持っているので、そのようにアプローチする必要があると考えました. さまざまな手法を使用して多数のプロトタイプを作成した後、ビデオからテクスチャへのレンダリングを引き出し、DirectX を使用してすべてのクライアントの要求を満たすことができると確信していました。
しかし、私は今、どのテクニックを使うべきかを選ばなければならないところに来ており、これ以上迷うことはありません.
- DirectShow
- メディア財団
- メディア セッション (< Windows 8)
- メディア エンジン (> Windows 8)
- DXVA1
- DXVA2
- DXVA-HD
DirectShow は明らかに最も古いものですが、利用可能なコーデックの量が非常に多いため、依然として十分に機能します。
メディア ファンデーションは Windows Vista で導入され、Windows 8 までは「メディア セッション」と呼ばれるものがあり、その後「メディア エンジン」が導入されました。私が正しい場合、コーデックは MFT と呼ばれますか? free-codecs.com のようにこれらを利用できるサイトは実際にありますか?
これら 2 つの手法に加えて、ビデオ デコードを GPU にオフロードできる DXVA があります。現在、私は3つの異なるタイプに出くわしました。DXVA1 は XP 以降の実装であり、DXVA2 は新しい API です。しかし、DXVA-HDとは何ですか?DXVA2 よりも新しいものですか、それとも同等の名前ですか?
私は本当に Media Foundation に移行したいと思っています。すぐに使用できるコーデックは、クライアントが使用したいフォーマットで非常にうまく機能します。私が懸念しているのは、コーデックを入手するのがいかに簡単かということだけです... Windows 8 以降のデフォルトのメディア プレーヤーには、DirectShow と MF の両方のレンダリング パスがまだあり、その場でそれらを交換しますか、それとも Microsoft は DirectShow を完全に廃止しますか?
また、DXVA がどのように機能するのか、よくわかりません。基本的にゲーム内でビデオをレンダリングしたい場合、すべてのレンダリングを実際に GPU で実行し、アプリケーション ロジックを CPU に保持することは理にかなっていますが、メディアを使用してそれを利用する方法の良い例を実際に見つけることができません財団。これは主に、DXVA2 と DXVA-HD の違いがわからないことが原因です。Windows 7 SDK には、3 つの実装すべてのサンプルが付属しています...
誰かが私の質問に太字で答え、誤った情報を修正し、適切な例 (DirectX + Media Foundation + DXVA など) を教えてくれたら、本当に感謝しています! 「Windows 7 SDK のこれら 3 つの例を組み合わせて、必要なものを取得する」のと同じくらい簡単です。
課題全体の目標は、アプリケーションを再び最高の形にすることであり、DirectShow がすでに持っているように、次の 10 年間続くテクニックを確実に選択したいと考えています :P