IDirectXVideoAccelerationService::CreateSurface メソッド (dxva2api.h)
DirectX ビデオ アクセラレーション (DXVA) ビデオ プロセッサまたは DXVA デコーダー レンダー ターゲットを作成します。
構文
HRESULT CreateSurface(
[in] UINT Width,
[in] UINT Height,
[in] UINT BackBuffers,
[in] D3DFORMAT Format,
[in] D3DPOOL Pool,
[in] DWORD Usage,
[in] DWORD DxvaType,
[out] IDirect3DSurface9 **ppSurface,
[in, out] HANDLE *pSharedHandle
);
パラメーター
[in] Width
サーフェスの幅 (ピクセル単位)。
[in] Height
サーフェスの高さ (ピクセル単位)。
[in] BackBuffers
バック バッファーの数。 メソッドは 、BackBuffers + 1 つのサーフェスを作成します。
[in] Format
D3DFORMAT 値または FOURCC コードとして指定されたピクセル形式。 詳細については、Direct3D のドキュメントを参照してください。
[in] Pool
D3DPOOL 値として指定されたサーフェスを作成するメモリ プール。 詳細については、Direct3D のドキュメントを参照してください。 デコーダーは通常、D3DPOOL_DEFAULT値を使用する必要があります。
[in] Usage
予約済み。 この値を 0 に設定します。
[in] DxvaType
作成するサーフェスの種類。 次のいずれかの値を使用します。
値 | 意味 |
---|---|
|
ビデオ デコーダーのレンダー ターゲット。 |
|
ビデオ プロセッサのレンダー ターゲット。 IDirectXVideoProcessor::VideoProcessBlt 操作に使用されます。 |
|
ソフトウェア レンダー ターゲット。 このサーフェスの種類は、ソフトウェア DXVA デバイスで使用するためのものです。 |
[out] ppSurface
呼び出し元によって割り当てられた IDirect3DSurface9 ポインターの配列のアドレス。 配列のサイズは、1 + BackBuffers である必要があります (バック バッファーと 1 つのフロント バッファーに十分です)。 メソッドは、 配列に IDirect3DSurface9 ポインターを入力します。 呼び出し元は、すべてのインターフェイス ポインターを解放する必要があります。 さらに、フロント バッファーは、各バック バッファーの参照カウントを保持します。 したがって、フロント バッファーが削除されるまで、バック バッファーは削除されません。
[in, out] pSharedHandle
Direct3D デバイス間でサーフェスを共有するために使用されるハンドルへのポインター。 このパラメーターを NULL に設定 します。
戻り値
このメソッドは HRESULT を返します。 有効な値を次の表に示しますが、これ以外にもあります。
リターン コード | 説明 |
---|---|
|
メソッドが成功しました。 |
|
無効なパラメーター |
|
DirectX ビデオ アクセラレーション マネージャーが初期化されていません。 |
|
NULL ポインター引数。 |
解説
メソッドが E_FAILを返す場合は、 IDirect3DDeviceManager9::ResetDevice を呼び出して DirectX ビデオ アクセラレーション マネージャーをリセットしてみてください。
要件
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | dxva2api.h |