ホーム › Media.MediaFoundation › IDirectXVideoAccelerationService
IDirectXVideoAccelerationService
COM公式ドキュメント
Direct3D デバイスから DirectX Video Acceleration (DXVA) サービスを提供します。
解説(Remarks)
これは DXVA サービスの基本インターフェイスです。Direct3D デバイスは、IDirectXVideoAccelerationService から派生する以下のいずれの DXVA サービスもサポートできます。
- ビデオデコード: IDirectXVideoDecoderService
- ビデオ処理: IDirectXVideoProcessorService
メソッド 1
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
vtbl 3 HRESULT CreateSurface(DWORD Width, DWORD Height, DWORD BackBuffers, D3DFORMAT Format, D3DPOOL Pool, DWORD Usage, DWORD DxvaType, IDirect3DSurface9** ppSurface, HANDLE* pSharedHandle)
DirectX Video Acceleration (DXVA) ビデオプロセッサまたは DXVA デコーダーのレンダーターゲットを作成します。
| Width | DWORD | in | サーフェスの幅(ピクセル単位)。 | ||||||||
| Height | DWORD | in | サーフェスの高さ(ピクセル単位)。 | ||||||||
| BackBuffers | DWORD | in | バックバッファーの数。このメソッドは BackBuffers + 1 個のサーフェスを作成します。 | ||||||||
| Format | D3DFORMAT | in | D3DFORMAT 値または FOURCC コードで指定するピクセル形式。詳細については、Direct3D のドキュメントを参照してください。 | ||||||||
| Pool | D3DPOOL | in | サーフェスを作成するメモリプール。D3DPOOL 値で指定します。詳細については、Direct3D のドキュメントを参照してください。デコーダーでは通常、値 D3DPOOL_DEFAULT を使用します。 | ||||||||
| Usage | DWORD | in | 予約済み。この値は 0 に設定してください。 | ||||||||
| DxvaType | DWORD | in | 作成するサーフェスの種類。以下のいずれかの値を使用します。
| ||||||||
| ppSurface | IDirect3DSurface9** | out | 呼び出し元が割り当てた IDirect3DSurface9 ポインターの配列のアドレス。配列のサイズは 1 + BackBuffers (バックバッファーとフロントバッファー 1 個分)である必要があります。このメソッドは配列に IDirect3DSurface9 ポインターを設定します。呼び出し元は、すべてのインターフェイスポインターを解放する必要があります。さらに、フロントバッファーは各バックバッファーに対して参照カウントを保持します。したがって、フロントバッファーが削除されるまで、バックバッファーが削除されることはありません。 | ||||||||
| pSharedHandle | HANDLE* | inoutoptional | Direct3D デバイス間でサーフェスを共有するために使用するハンドルへのポインター。このパラメーターは NULL に設定してください。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドが成功しました。 | |
|
無効なパラメーターです。 |
| DirectX Video Acceleration Manager が初期化されていません。 | |
| NULL ポインター引数です。 |
解説(Remarks)
このメソッドが E_FAIL を返す場合は、IDirect3DDeviceManager9::ResetDevice を呼び出して DirectX Video Acceleration Manager をリセットしてみてください。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IDirectXVideoAccelerationService "{FC51A550-D5E7-11D9-AF55-00054E43FF02}"
#usecom global IDirectXVideoAccelerationService IID_IDirectXVideoAccelerationService "{}"
#comfunc global IDirectXVideoAccelerationService_CreateSurface 3 int,int,int,int,int,int,int,sptr,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。