次の方法で共有


ICaptureGraphBuilder2::ControlStream メソッド (strmif.h)

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

メソッドは ControlStream 、キャプチャされたデータの 1 つ以上のストリームの開始時刻と停止時刻を設定します。

構文

HRESULT ControlStream(
  [in] const GUID     *pCategory,
  [in] const GUID     *pType,
  [in] IBaseFilter    *pFilter,
  [in] REFERENCE_TIME *pstart,
  [in] REFERENCE_TIME *pstop,
  [in] WORD           wStartCookie,
  [in] WORD           wStopCookie
);

パラメーター

[in] pCategory

Pin プロパティ セットに一覧表示されているピン カテゴリのいずれかを指定する GUID へのポインター。 このパラメーターの値を NULL にすることはできません。

[in] pType

メディアの種類 ( NULL) を指定するメジャー型 GUID へのポインター。 このパラメーターが NULL の場合は、 pFilter パラメーターも NULL に設定します。 そうしないと、間違ったピンを制御し、予期しない結果が得られる可能性があります。

[in] pFilter

制御するフィルターを指定する IBaseFilter インターフェイスへのポインター。 グラフ内のすべてのキャプチャ フィルターを制御するには、このパラメーターを NULL に設定 します

[in] pstart

開始時刻を含む変数へのポインター。 値が MAXLONGLONG (0x7FFFFFFFFFFFFFFF) の場合、メソッドは前の開始要求を取り消します。 値が NULL の場合、グラフが実行されるとすぐにピンが開始されます。

[in] pstop

停止時刻を含む変数へのポインター。 値が MAXLONGLONG の場合、メソッドは以前の停止要求を取り消します。 値が NULL の場合、ピンはすぐに停止します。

[in] wStartCookie

EC_STREAM_CONTROL_STARTED イベント通知の 2 番目のパラメーターとして送信される値。 詳細については、「解説」を参照してください。

[in] wStopCookie

EC_STREAM_CONTROL_STOPPED イベント通知の 2 番目のパラメーターとして送信される値。 詳細については、「解説」を参照してください。

戻り値

HRESULT 値を返します。 使用可能な値は次のとおりです。

リターン コード 説明
S_FALSE
少なくとも 1 つのダウンストリーム レンダラーは停止通知を送信しません。
S_OK
正常終了しました。
E_FAIL
一致するピンが見つからなかったか、またはピンがストリーム制御をサポートしていませんでした。
E_POINTER
NULL ポインター引数。

注釈

このメソッドは、メソッド呼び出しで指定した検索条件を使用して、キャプチャ フィルターの出力ピンを検索します。 その後、これらのピンで IAMStreamControl メソッドを呼び出します。 このメソッドを使用すると、アプリケーションは、グラフ内のフィルターとピンを列挙する必要なく、ストリームを制御できます。

フレーム精度のキャプチャ、またはキャプチャとプレビューの個々の制御には、この方法を使用します。 たとえば、ディスクへのキャプチャを停止し、ビデオ プレビューを実行したままにすることができます。

最初の 3 つのパラメーターは、制御するピンを指定します。 キャプチャ グラフには、複数のキャプチャ フィルターを含めることができます。 たとえば、ビデオ、オーディオ、クローズド キャプションデータのフィルターがあるとします。 また、キャプチャ フィルターには複数の出力ピンを含めることができます。 一部のキャプチャ フィルターには、プレビューとキャプチャ用の個別のピン、またはビデオ専用データとオーディオ ビデオインターリーブ データ用の個別のピンがあります。 たとえば、ビデオプレビューを制御するには、 pCategory にPIN_CATEGORY_PREVIEWを指定し、 pType にMEDIATYPE_Videoを指定します。

  

ピン カテゴリがPIN_CATEGORY_PREVIEWされている場合は、プレビュー ピンによって配信されるサンプルにタイムスタンプがないため、特定の開始時刻と停止時刻を設定できません (「 タイム スタンプ」を参照)。 代わりに、 NULL 値と MAXLONGLONG 値を使用して、必要な時間にピンを開始および停止します。

また、デバイスがビデオ ポート ピンを使用している場合、この方法はプレビューではサポートされません。その場合、デバイスはハードウェア経由でプレビュー サンプルを直接配信しているためです。

 
ピンを制御するために、このメソッドは IAMStreamControl::StartAt メソッドと IAMStreamControl::StopAt メソッドを 呼び出します。 各ピンは、起動時 にEC_STREAM_CONTROL_STARTED イベント通知を送信します。 イベント通知の 2 番目のパラメーターは、 wStartCookie で指定された値です。 ピンが停止すると、 EC_STREAM_CONTROL_STOPPED イベント通知が送信されます。 そのイベント通知の 2 番目のパラメーターは 、wStopCookie で指定された値です。

このメソッドは、一致するピンを見つけると、 IAMStreamControl (通常はマルチプレクサー) をサポートする別のフィルターをダウンストリームで検索します。 見つかると、そのフィルターの開始時刻と停止時刻も設定されます。 これにより、2 つの停止通知のペアが生成されます。1 つはキャプチャ フィルター用、もう 1 つはダウンストリーム フィルター用です。 ダウンストリーム フィルターからの停止通知のみが wStopCookie パラメーターを使用します。 このイベントを待機すると、ダウンストリーム フィルターが最後のサンプルを受け取ります。

IAMStreamControl をサポートするダウンストリーム フィルターがない場合、メソッドは S_FALSEを返します。 その場合は、最後のサンプルがレンダリングされる前に停止通知を受け取る場合があります。

MAXLONGLONG は、可能な最大 のREFERENCE_TIME 値です。 DirectShow 基本クラス ライブラリでは、定数 MAX_TIMEとしても定義されます。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー strmif.h (Dshow.h を含む)
Library Strmiids.lib

こちらもご覧ください

エラーコードと成功コード

ICaptureGraphBuilder2 インターフェイス