Win32 API 日本語リファレンス
ホームMedia.MediaFoundation › IDirectXVideoAccelerationService

IDirectXVideoAccelerationService

COM
IIDfc51a550-d5e7-11d9-af55-00054e43ff02継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

Direct3D デバイスから DirectX Video Acceleration (DXVA) サービスを提供します。

解説(Remarks)

これは DXVA サービスの基本インターフェイスです。Direct3D デバイスは、IDirectXVideoAccelerationService から派生する以下のいずれの DXVA サービスもサポートできます。

メソッド 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 デコーダーのレンダーターゲットを作成します。

WidthDWORDinサーフェスの幅(ピクセル単位)。
HeightDWORDinサーフェスの高さ(ピクセル単位)。
BackBuffersDWORDinバックバッファーの数。このメソッドは BackBuffers + 1 個のサーフェスを作成します。
FormatD3DFORMATinD3DFORMAT 値または FOURCC コードで指定するピクセル形式。詳細については、Direct3D のドキュメントを参照してください。
PoolD3DPOOLinサーフェスを作成するメモリプール。D3DPOOL 値で指定します。詳細については、Direct3D のドキュメントを参照してください。デコーダーでは通常、値 D3DPOOL_DEFAULT を使用します。
UsageDWORDin予約済み。この値は 0 に設定してください。
DxvaTypeDWORDin

作成するサーフェスの種類。以下のいずれかの値を使用します。

意味
DXVA2_VideoDecoderRenderTarget
ビデオデコーダーのレンダーターゲット。
DXVA2_VideoProcessorRenderTarget
ビデオプロセッサのレンダーターゲット。IDirectXVideoProcessor::VideoProcessBlt 操作に使用します。
DXVA2_VideoSoftwareRenderTarget
ソフトウェアレンダーターゲット。このサーフェスの種類は、ソフトウェア DXVA デバイスで使用します。
ppSurfaceIDirect3DSurface9**out呼び出し元が割り当てた IDirect3DSurface9 ポインターの配列のアドレス。配列のサイズは 1 + BackBuffers (バックバッファーとフロントバッファー 1 個分)である必要があります。このメソッドは配列に IDirect3DSurface9 ポインターを設定します。呼び出し元は、すべてのインターフェイスポインターを解放する必要があります。さらに、フロントバッファーは各バックバッファーに対して参照カウントを保持します。したがって、フロントバッファーが削除されるまで、バックバッファーが削除されることはありません。
pSharedHandleHANDLE*inoutoptionalDirect3D デバイス間でサーフェスを共有するために使用するハンドルへのポインター。このパラメーターは NULL に設定してください。

戻り値

このメソッドは HRESULT を返します。取り得る値には、以下の表に示すものが含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドが成功しました。
D3DERR_INVALIDCALL
無効なパラメーターです。
E_FAIL
DirectX Video Acceleration Manager が初期化されていません。
E_POINTER
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)

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 指定が可能。