次の方法で共有


ISampleGrabber::GetCurrentBuffer メソッド

[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayerIMFMediaEngineAudio/Video Capture を使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存のコードを、可能であれば新しい API を使用するように書き換えるよう提案しています。]

注意

[非推奨。 この API は、Windows の今後のリリースから削除される可能性があります。]

 

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

構文

HRESULT GetCurrentBuffer(
  [in, out] long *pBufferSize,
  [out]     long *pBuffer
);

パラメーター

pBufferSize [in, out]

バッファーのサイズへのポインター。 pBufferNULL の場合、このパラメーターは必要なバッファー サイズ (バイト単位) を受け取ります。 pBufferNULL でない場合は、このパラメーターをバッファーのサイズ (バイト単位) に設定します。 出力時に、 パラメーターはバッファーにコピーされたバイト数を受け取ります。 この値は、バッファーのサイズよりも小さい場合があります。

pBuffer [out]

サイズ pBufferSize または NULL のバイト配列へのポインター。 このパラメーターが NULL でない場合、現在のバッファーが配列にコピーされます。 このパラメーターが NULL の場合、 pBufferSize パラメーターは必要なバッファー サイズを受け取ります。

戻り値

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

リターン コード 説明
E_INVALIDARG
サンプルがバッファーに格納されていません。 ISampleGrabber::SetBufferSamples を呼び出します。
E_OUTOFMEMORY
指定されたバッファーの大きさが十分ではありません。
E_POINTER
NULL ポインター引数。
S_OK
成功しました。
VFW_E_NOT_CONNECTED
フィルターが接続されていません。
VFW_E_WRONG_STATE
フィルターはまだサンプルを受け取っていません。 サンプルを配信するには、グラフを実行または一時停止します。

 

解説

バッファリングをアクティブにするには、値が TRUEISampleGrabber::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では使用できません。

 

要件

要件
ヘッダー
Qedit.h
ライブラリ
Strmiids.lib

関連項目

サンプル グラバーの使用

ISampleGrabber インターフェイス