IMemAllocator::GetBuffer メソッド (strmif.h)
[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayer、IMFMediaEngine、Audio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]
GetBuffer メソッドは、空のバッファーを含むメディア サンプルを取得します。
構文
HRESULT GetBuffer(
[out] IMediaSample **ppBuffer,
[in] REFERENCE_TIME *pStartTime,
[in] REFERENCE_TIME *pEndTime,
[in] DWORD dwFlags
);
パラメーター
[out] ppBuffer
バッファーの IMediaSample インターフェイスへのポインターを受け取ります。 呼び出し元はインターフェイスを解放する必要があります。
[in] pStartTime
サンプルの開始時刻 ( NULL) へのポインター。
[in] pEndTime
サンプルの終了時刻 ( NULL) へのポインター。
[in] dwFlags
次のフラグの 0 個以上のビットごとの組み合わせ。
フラグ | 説明 |
---|---|
AM_GBF_NOTASYNCPOINT | このサンプルは同期ポイントではありません。 このサンプルでは、動的な形式の変更は許可されていません。 オーバーレイ ミキサーまたは VMR で呼び出されると、このフラグは、返されるバッファーに、最後に配信されたイメージと同じイメージが含まれていることを意味します。 |
AM_GBF_PREVFRAMESKIPPED | このサンプルは、不連続性の後の最初のサンプルです。 (このフラグはビデオ レンダラーでのみ使用されます)。 |
AM_GBF_NOWAIT | バッファーが使用可能になるまで待つ必要はありません。 |
AM_GBF_NODDSURFACELOCK | ビデオ 混合レンダラー フィルター 7 と共に使用して、ロック解除された DirectDraw サーフェスを要求します。 詳細については、「 Direct3D レンダー ターゲットの操作」を参照してください。 |
戻り値
HRESULT 値を返します。 次の表に示す値を指定できます。
リターン コード | 説明 |
---|---|
|
成功しました。 |
|
Allocator はコミット解除されます。 |
|
タイムアウトしました。 |
解説
既定では、このメソッドは、無料のサンプルが使用できるようになるか、アロケーターがコミット解除されるまでブロックします。 呼び出し元がAM_GBF_NOWAIT フラグを指定し、使用できるサンプルがない場合、アロケーターは戻り値VFW_E_TIMEOUTですぐに戻ることができます。 ただし、このフラグをサポートするためにアロケーターは必要ありません。
ppBuffer で返されるサンプルには、有効なバッファー ポインターがあります。 呼び出し元は、タイム スタンプ、メディア時刻、同期ポイント プロパティなど、サンプルの他のプロパティを設定する必要があります。 (詳細については、「 IMediaSample」を参照してください)。
pStartTime パラメーターと pEndTime パラメーターは、サンプルには適用されません。 アロケーターは、これらの値を使用して、取得するバッファーを決定できます。 たとえば、 ビデオ レンダラー フィルターでは、これらの値を使用して DirectDraw サーフェス間の切り替えを同期します。 サンプルにタイム スタンプを設定するには、 IMediaSample::SetTime メソッドを呼び出します。
このメソッドを呼び出す前に 、IMemAllocator::Commit メソッドを呼び出す必要があります。 このメソッドは、 IMemAllocator::D ecommit メソッドが呼び出された後に失敗します。
要件
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | strmif.h (Dshow.h を含む) |
Library | Strmiids.lib |