IVMRSurfaceAllocator::AllocateSurface メソッド (strmif.h)
[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayer、IMFMediaEngine、Audio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]
メソッドは AllocateSurface
DirectDraw サーフェイスを割り当てます。
構文
HRESULT AllocateSurface(
[in] DWORD_PTR dwUserID,
[in] VMRALLOCATIONINFO *lpAllocInfo,
[in] DWORD *lpdwActualBuffers,
[out] LPDIRECTDRAWSURFACE7 *lplpSurface
);
パラメーター
[in] dwUserID
アプリケーション定義のDWORD_PTR Cookie。アロケーター 発表者の 1 つのインスタンスが複数の VMR インスタンスで使用されるシナリオで使用するために、VMR のこのインスタンスを一意に識別します。
[in] lpAllocInfo
VMRALLOCATIONINFO 構造体を指定します。 「解説」を参照してください。
[in] lpdwActualBuffers
[out]入力時に、このパラメーターを使用して、必要なバッファーの数を要求します。 出力では、作成されたバッファーの実際の数を受け取ります。
[out] lplpSurface
Direct3D サーフェスを受け取るポインターのアドレス。
戻り値
メソッドが成功した場合は、S_OK を返します。 失敗した場合はエラー コードを返します。
リターン コード | 説明 |
---|---|
|
いずれかのポインターが無効です。 |
|
dwFlags では、AMAP_3D_TARGETがAMAP_FORCE_SYSMEMまたはAMAP_ALLOW_SYSMEMと組み合わされました。 |
|
lpAllocInfo-lpHdr で指定された BITMAPINFOHEADER 構造体の 1 つ以上の>メンバーが正しくありません。 |
注釈
AllocateSurface を明示的に呼び出す前に、クライアント アプリケーションで IVMRSurfaceAllocator::FreeSurface を呼び出して、DirectDraw デコード サーフェイス フロント バッファーが NULL であることを確認する必要があります。 アプリケーションが AllocateSurface を呼び出す時点で NULL でない場合、quartz.dll のデバッグ バージョンによってアサーションが発生します。
カスタム アロケーター 発表者でこのメソッドを実装する場合は、lpAllocInfo-lpHdr-biBitCount >>の値を調べる必要があります。 biBitCount が 0 の場合は、現在のディスプレイのピクセル深度に設定する必要があります。 BiBitCount を 0 のままにすると、サーフェス割り当てが失敗し、新しい (既定の) VMR が作成されます。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | SP1 を使用した Windows XP [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | strmif.h (Dshow.h を含む) |
Library | Strmiids.lib |