次の方法で共有


ISampleGrabber::GetCurrentBuffer

GetCurrentBuffer メソッドは、最新サンプルに関連付けられたバッファのコピーを取得する。

構文

  HRESULT GetCurrentBuffer(
  long *pBufferSize,
  long *pBuffer
);

パラメータ

pBufferSize

[in, out] バッファのサイズへのポインタ。pBuffer が NULL の場合、この引数は必要なバッファ サイズを受け取る。pBuffer が NULL でない場合、この引数にはバッファのサイズを設定する。出力では、この引数はバッファにコピーされるデータのサイズを受け取る。このサイズは、バッファのサイズよりも小さい場合がある。

pBuffer

[out] サンプルのコピーを受け取るバッファへのポインタ。または NULL。

戻り値

次のいずれかの値を返す。

戻りコード 説明
E_INVALIDARG サンプルはバッファリングされていない。
E_OUTOFMEMORY 指定されたバッファの大きさが不十分。
E_POINTER NULL ポインタ引数。
S_OK 成功。
VFW_E_NOT_CONNECTED フィルタが接続されていない。
VFW_E_WRONG_STATE フィルタがまだサンプルを受け取っていない。サンプルを出力するには、グラフを実行するかポーズする。

注意

バッファリングをアクティブにするには、値 TRUE で ISampleGrabber::SetBufferSamples を呼び出す。

このメソッドは 2 回呼び出す。最初の呼び出しでは、pBuffer を NULL に設定する。バッファのサイズは、pBufferSize によって返される。次に、バッファを割り当てて、再びメソッドを呼び出す。2 回目の呼び出しでは、バッファのサイズを pBufferSize で渡し、バッファのアドレスを pBuffer で渡す。指定したバッファの大きさが十分でなければ、このメソッドは E_OUTOFMEMORY を返す。

フィルタは、プリロール サンプル、または AM_SAMPLE2_PROPERTIES 構造体の dwStreamId メンバが AM_STREAM_MEDIA ではないサンプルはバッファリングしない。

参照