ISampleGrabber::GetCurrentBuffer メソッド
[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayer、IMFMediaEngine、Audio/Video Capture を使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存のコードを、可能であれば新しい API を使用するように書き換えるよう提案しています。]
注意
[非推奨。 この API は、Windows の今後のリリースから削除される可能性があります。]
GetCurrentBuffer メソッドは、最新のサンプルに関連付けられているバッファーのコピーを取得します。
構文
HRESULT GetCurrentBuffer(
[in, out] long *pBufferSize,
[out] long *pBuffer
);
パラメーター
-
pBufferSize [in, out]
-
バッファーのサイズへのポインター。 pBuffer が NULL の場合、このパラメーターは必要なバッファー サイズ (バイト単位) を受け取ります。 pBuffer が NULL でない場合は、このパラメーターをバッファーのサイズ (バイト単位) に設定します。 出力時に、 パラメーターはバッファーにコピーされたバイト数を受け取ります。 この値は、バッファーのサイズよりも小さい場合があります。
-
pBuffer [out]
-
サイズ pBufferSize または NULL のバイト配列へのポインター。 このパラメーターが NULL でない場合、現在のバッファーが配列にコピーされます。 このパラメーターが NULL の場合、 pBufferSize パラメーターは必要なバッファー サイズを受け取ります。
戻り値
次のいずれかの値を返します。
リターン コード | 説明 |
---|---|
|
サンプルがバッファーに格納されていません。
ISampleGrabber::SetBufferSamples を呼び出します。 |
|
指定されたバッファーの大きさが十分ではありません。 |
|
NULL ポインター引数。 |
|
成功しました。 |
|
フィルターが接続されていません。 |
|
フィルターはまだサンプルを受け取っていません。 サンプルを配信するには、グラフを実行または一時停止します。 |
解説
バッファリングをアクティブにするには、値が TRUE の ISampleGrabber::SetBufferSamples を呼び出します。
このメソッドを 2 回呼び出します。 最初の呼び出しで、 pBuffer を NULL に設定 します。 バッファーのサイズは pBufferSize で返されます。 次に、配列を割り当てて、 メソッドをもう一度呼び出します。 2 番目の呼び出しでは、 pBufferSize で配列のサイズを渡し、 pBuffer で配列のアドレスを渡します。 配列の大きさが十分でない場合、メソッドは E_OUTOFMEMORY を返します。
pBuffer パラメーターは長いポインターとして型指定されますが、バッファーの内容はデータの形式によって異なります。 ISampleGrabber::GetConnectedMediaType を呼び出して、形式のメディアの種類を取得します。
フィルター グラフの実行中は、このメソッドを呼び出さないでください。 フィルター グラフの実行中、サンプル グラバー フィルターは、新しいサンプルを受信するたびにバッファーの内容を上書きします。 この方法を使用する最善の方法は、最初のサンプルを受け取った後にグラフを停止する "ワンショット モード" を使用することです。 ワンショット モードを設定するには、 ISampleGrabber::SetOneShot を呼び出します。
フィルターは、プリロール サンプル、またはAM_SAMPLE2_PROPERTIES構造体の dwStreamId メンバーが AM_STREAM_MEDIA 以外のサンプルをバッファーに格納しません。
Note
ヘッダー ファイル Qedit.h は、バージョン 7 より後の Direct3D ヘッダーと互換性がありません。
注意
Qedit.h を取得するには、Windows Vista および .NET Framework 3.0 用の Microsoft Windows SDK Update をダウンロードします。 Qedit.h は、Windows 7 および .NET Framework 3.5 Service Pack 1 のMicrosoft Windows SDKでは使用できません。
要件
要件 | 値 |
---|---|
ヘッダー |
|
ライブラリ |
|
関連項目