DirectX Video Acceleration

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

 概要 

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

DXVAは動き補償DDIを規定する。これはiDCT、ハフマン符号化、動き補償、アルファブレンディング、逆量子化、色空間変換およびフレームレート変換操作のためのインターフェイスを規定するものである。また、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以降でのみ利用可能であるため、DXVA 2.0も対象がそのOSのみに制限される。Windows XPおよびWindows 2000では、代わりにDXVA 1.0を使用できる。DXVA 2.0はVista以降でのみビデオレンダラとしてEnhanced Video Rendererを使用できる。。。

DXVA 1.0はDXVA 2.0を使用してエミュレートされる。DXVA 2.0はCOPP DDIを含まないどころか、保護されたコンテンツにはPVPが使用されている。ドライバーがWDDM 1.1に準拠している場合、Windows 7/Windows Server 2008 R2はDXVA-HDを提供するDXVA-HD - Win32 apps | Microsoft LearnDXVA-HD DDI - Windows drivers | Microsoft LearnWDDM 1.2 と Windows 8 - Windows drivers | Microsoft Learn。

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

。。。

。。

ネイティブモードは、CPUにおける追加処理が必要でない限り負荷軽減という意味でコピーバックモードより有利である。CPUにおける処理を可能にするためにコピーバックモードで実行されるVRAMからメインメモリへの処理結果のコピーバック操作はGPUのメモリ負荷を増加させることになるASRock's High-End Vision 3D 252B HTPC Review: HTPC Decoding & Rendering Benchmarks: madVR。

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

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

 ソフトウェア 
 Adobe Flash v10.3 以降
 Daum PotPlayerhttp://tvpot.daum.net/application/PotPlayer.do
 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 のみ)http://wiki.videolan.org/VLC_DxVA2
 WinDVD
 Windows Media Player 11 (WMV3 のみ）
 Windows Media Player 12
 5KPlayer

 参考文献 

 関連項目 
 AMD Unified Video Decoder
 Microsoft DirectX
 Media Foundation

 外部リンク 
 DirectX Video Acceleration
 DirectX Video Acceleration 2.0
 DXVAChecker

Category:DirectX
Category:マイクロソフトのAPI