DXVA 2.0 について

DirectX ビデオ アクセラレーション (DXVA) は、ハードウェア アクセラレータを使用してビデオ処理を高速化するための API および対応する DDI です。 ソフトウェア コーデックとソフトウェア ビデオ プロセッサでは、DXVA を使用して、CPU 負荷の高い特定の操作を GPU にオフロードできます。 たとえば、ソフトウェア デコーダーは、逆離散コサイン変換 (iDCT) を GPU にオフロードできます。

DXVA では、一部のデコード操作はグラフィックス ハードウェア ドライバーによって実装されます。 この一連の機能はアクセラレータと呼ばれます。 その他のデコード操作は、ホスト デコーダーまたはソフトウェア デコーダーと呼ばれるユーザー モードのアプリケーション ソフトウェアによって実装されます。 (ホスト デコーダーソフトウェア デコーダーという用語は同等です)。アクセラレータによって実行される処理は、オフホスト処理と呼ばれます。 通常、アクセラレータは GPU を使用して一部の操作を高速化します。 アクセラレータがデコード操作を実行するたびに、ホスト デコーダーは操作を実行するために必要な情報を含むアクセラレータ バッファーに伝達する必要があります

DXVA 2 API には Windows Vista 以降が必要です。 後方互換対応のために、DXVA 1 API は引き続き Windows Vista でサポートされています。 いずれかのバージョンの API と逆のバージョンの DDI を変換するエミュレーション レイヤが用意されています。

  • グラフィックス ドライバーが Windows ディスプレイ ドライバー モデル (WDDM) に準拠している場合、DXVA 1 API 呼び出しは DXVA 2 DDI 呼び出しに変換されます。
  • グラフィックス ドライバーが以前の Windows XP ディスプレイ ドライバー モデル (XPDM) を使用している場合、DXVA 2 API 呼び出しは DXVA 1 DDI 呼び出しに変換されます。

次の表は、DXVA API の各バージョンのオペレーティング システム要件とサポートされているビデオ レンダラーを示しています。

API バージョン 要件 ビデオ レンダラーのサポート
DXVA 1 Windows 2000 以降 オーバーレイ ミキサー、VMR-7、VMR-9 (DirectShow のみ)
DXVA 2 Windows Vista EVR (DirectShow とメディア ファンデーション)

 

DXVA 1 では、ソフトウェア デコーダーはビデオ レンダラーを介して API にアクセスする必要があります。 ビデオ レンダラーを呼び出さずに DXVA 1 API を使用する方法はありません。 この制限は、DXVA 2 で削除されました。 DXVA 2 を使用すると、ホスト デコーダー (または任意のアプリケーション) は、IDirectXVideoDecoderService インターフェイスを介して API に直接アクセスできます。

DXVA 1 のドキュメントでは、次のビデオ標準で使用されるデコード構造について説明します。

  • ITU-T Rec. H.261
  • ITU-T Rec. H.263
  • MPEG-1 ビデオ
  • MPEG-2 メイン プロファイル ビデオ

次の仕様では、他のビデオ標準の DXVA 拡張機能を定義します。

DXVA 1 と DXVA 2 は、デコードに同じデータ構造を使用します。 ただし、デコード セッションを構成する手順が変更されました。 DXVA 1 は"プローブとロック" メカニズムを使用します。ホスト デコーダーは、アクセラレータで目的の構成を設定する前に、さまざまな構成をテストできます。 DXVA 2 では、アクセラレータはサポートされている構成の一覧を返し、ホスト デコーダーは一覧から 1 つを選択します。 詳細については、次のセクションを参照してください。

DirectX ビデオ アクセラレータ 2.0

DXVA 1.0 仕様