IMemAllocator::GetBuffer メソッド (strmif.h)

[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayerIMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayerIMFMediaEngineAudio/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 値を返します。 次の表に示す値を指定できます。

リターン コード 説明
S_OK
成功しました。
VFW_E_NOT_COMMITTED
Allocator はコミット解除されます。
VFW_E_TIMEOUT
タイムアウトしました。

解説

既定では、このメソッドは、無料のサンプルが使用できるようになるか、アロケーターがコミット解除されるまでブロックします。 呼び出し元が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

関連項目

エラーコードと成功コード

IMemAllocator インターフェイス