次の方法で共有


ISampleGrabber::SetOneShot メソッド

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

注意

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

 

SetOneShot メソッドは、フィルターがサンプルを受信した後に Sample Grabber フィルターが停止するかどうかを指定します。

構文

HRESULT SetOneShot(
   BOOL OneShot
);

パラメーター

OneShot

サンプルグラバー フィルターがサンプルの受信後に停止するかどうかを指定するブール値。

説明
True
サンプル グラバーは、最初のサンプルの後に停止します。
False
最初のサンプルの後、サンプル グラバーは引き続きサンプルを処理します。 これが既定の動作です。

 

戻り値

このメソッドは、成功すると S_OK を返します。 そうでない場合は、HRESULT エラー コードを返します。

解説

次のように、ストリームから 1 つのサンプルを取得するには、このメソッドを使用します。

  1. TRUE を指定して SetOneShot を呼び出します。
  2. 必要に応じて、 IMediaSeeking インターフェイスを 使用してストリーム内の位置をシークします。
  3. IMediaControl::Run を呼び出して、フィルター グラフを実行します。
  4. グラフが停止するのを待つには 、IMediaEvent::WaitForCompletion を呼び出します。 または、EC_COMPLETE イベントが発生するまで、IMediaEvent::GetEvent を呼び出してグラフ イベントを取得します。

サンプル グラバーが停止した後も、フィルター グラフは実行中の状態です。 グラフをシークまたは一時停止して、別のサンプルを取得できます。

注意

以前のバージョンのドキュメントでは、サンプルの受信後にフィルター グラフが停止することが記載されています。 これは正確ではありません。 ストリームは終了しますが、グラフは実行中の状態のままです。

 

サンプル グラバーは、ダウンストリーム フィルターで IPin::EndOfStream を呼び出し、その IMemInputPin::Receive メソッドからS_FALSEを返すことで、ワンショット モードを実装します。

注意

ヘッダー ファイル 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 インターフェイス