DirectX Video Acceleration

DirectX Video Acceleration (DXVA) は、マイクロソフトのAPI仕様である。WindowsやXbox 360において、パイプラインにより、離散コサイン変換、動き補償、およびデインターレース処理などの特定のCPU集約型処理をGPUにオフロードすることで、ビデオのデコードをハードウェアアクセラレーションを利用して実行できるようにする。DXVA 2.0ではさらに、キャプチャや処理操作など、より多くの操作をハードウェアアクセラレーションで実行することができる。APIの一貫性の観点から、同様の機能は後にリリースされたDirect3D 11に統合され、DXVAは旧世代のAPIとなりつつ有る。

DXVAは、ビデオカードで使用されるビデオレンダリングモデルと連携して動作する。DXVA 1.0は、Windows 2000で標準化されたAPIとして導入され、現在Windows 98以降で利用可能で、オーバーレイレンダリングモードまたはVMR 7/9のいずれかを使用できる。DXVA 2.0は、Windows Vista、Windows 7とWindows 8以降のOSでのみ利用可能で、Media Foundation (MF) と統合されており、MFにあるEnhanced Video Renderer (EVR) を使用する。

概要 

DXVAは、ハードウェアアクセラレーションによるコーデックのデコードとレンダリングのためのコーデック固有のパイプラインを定義するソフトウェアビデオデコーダによって使用される。パイプラインは、メディアストリームの解析とDXVA互換構造への変換を行うCPUで開始される。DXVAは、ハードウェアアクセラレーションが利用可能な操作と、グラフィックスドライバが動作を高速化できるデバイスドライバ インターフェイス (DDI) を指定する。コーデックが定義された操作を実行する必要がある場合、これらのインターフェイスを使用して、ハードウェアによる高速化が行われた実装にアクセスできる。グラフィックスドライバが一部のインターフェイスを実装していない場合、ソフトウェアによるフォールバックを行うかどうかはコーデックにより異なる。デコードされたビデオはハードウェアビデオレンダラに渡されるが、ハードウェアビデオレンダラでは、デバイスにレンダリングされる前にさらなるビデオ後処理が適用されることがある。生成されたパイプラインは、DirectShow互換アプリケーションで使用できる。

DXVAは、離散コサイン変換、ハフマン符号化、動き補償、アルファブレンディング、逆量子化、色空間変換およびフレームレート変換演算のためのインターフェースを指定する動き補償DDIを指定する。また、Deinterlacing DDI、COPP DDI、ProcAmp DDIという3つのサブ仕様も含んでいる。Deinterlacing DDIは、デインターレース処理のコールバックを指定する。COPP (Certified Output Protection Protocol) DDI機能を使用すると、暗号化機能を指定することで、DRM保護されたメディアのパイプラインを保護できる。ProcAmp DDIは、ビデオの後処理を高速化するために使用される。そしてProcAmpドライバモジュールは、ハードウェアビデオレンダラとディスプレイドライバの間に配置され、圧縮解除されたビデオに後処理フィルタを適用する機能を提供する。

DXVA DDIによって公開される関数は、DirectShowクライアントから直接アクセスすることはできないが、ビデオレンダラにコールバック関数として提供されるため、レンダラはパイプラインを固定する上で非常に重要な役割を果たす。

Windows Vista以降でのDXVA 
DXVA 2.0はビデオパイプラインの実装を強化し、ビデオキャプチャ用のキャプチャDDIを含む他のDDIのホストを追加する。DXVA 1.0と共有するDDIでも、より多くの操作でハードウェアアクセラレーションを使用できるようになった。また、DDI関数は呼び出し元が直接利用することができ、ビデオレンダラが仲介する必要はない。このように、プログラムはメディアを単純に（レンダリングせずに）デコードするか、後処理およびレンダリング（デコードなしで）をするためのパイプラインを作成することもできる。これらの機能には、Windows Display Driver Model (WDDM) ドライバが必要となる。WDDMドライバは、Windows Vista、Windows Server 2008、Windows 7、Windows Server 2008 R2およびWindows 8以降でのみ利用可能であるため、DXVA 2.0も対象がそのOSのみに制限される。Windows XPおよびWindows 2000では、代わりにDXVA 1.0を使用できる。DXVA 2.0はVista、Windows 7、Windows 8以降でのみビデオレンダラとしてエンハンスドビデオレンダラを使用できる。。。

DXVA 1.0はDXVA 2.0を使用してエミュレートされる。DXVA 2.0はCOPP DDIを含まないどころか、保護されたコンテンツにはPVPが使用されている。ドライバーがWDDM 1.1に準拠している場合、Windows 7は DXVA-HDを提供する。

DXVA 2.0の実装：ネイティブとコピーバック 
。

。。。

。。

ネイティブモードは、CPUにおける追加処理が必要でない限り負荷軽減という意味でコピーバックモードより有利である。CPUにおける処理を可能にするためにコピーバックモードで実行されるVRAMからメインメモリへの処理結果のコピーバック操作はGPUのメモリ負荷を増加させることになる。

DXVAよりも後に同様の機能が統合されたDirect3D 11の場合、システムの性能評価に基づきネイティブとコピーバックが自動的に切り替えられる仕組みになった。

GPUは以下の条件を満たす必要がある。
 AMD: Radeon HD 6xxx 以降
 NVIDIA: GeForce 500 シリーズ以降
 Intel: Intel HD Graphics 2000 以降

ソフトウェア 
 Adobe Flash v10.3 以降
 Daum PotPlayer
 DivX H.264 Decoder v1.2 以降
 ffdshow-tryouts revision 3185 以降
 Freemake Video Converter v2.2 以降
 Kodi
 Media Player Classic Home Cinema
 Nero Multimedia Suite (Nero Kwik Media, Nero MediaHub, Nero Showtime)
 PowerDVD
 VLC media player v1.1 以降（DXVA 2.0 のみ)
 WinDVD
 Windows Media Player 11 (WMV3 のみ）
 Windows Media Player 12
 5KPlayer

参考文献

関連項目 
 AMD Unified Video Decoder
 DirectX
 Media Foundation

外部リンク 
 DirectX Video Acceleration
 DirectX Video Acceleration 2.0
 DXVAChecker
DirectX
マイクロソフトのAPI