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 ではないサンプルはバッファリングしない。
参照