CBaseRenderer.SourceThreadCanWait メソッド

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

メソッドは SourceThreadCanWait 、ストリーミング スレッドを保持または解放します。

構文

virtual HRESULT SourceThreadCanWait(
   BOOL bCanWait
);

パラメーター

bCanWait

ストリーミング スレッドを保持するかどうかを示すブール値。 TRUE の場合、フィルターが次のサンプルのレンダリングを待機している間、ストリーミング スレッドはブロックされます。 FALSE の場合、ストリーミング スレッドは解放されます。

戻り値

S_OK を返します。

解説

FALSE 値を指定して SourceThreadCanWait メソッドを呼び出すと、フィルターはブロックされた IMemInputPin::Receive 呼び出しから強制的に返されます。 フィルターを実行すると、現在のサンプルのプレゼンテーション時刻まで Receive 呼び出しがブロックされます。 フィルターを一時停止すると、Receive 呼び しが無期限にブロックされます。 この動作により、ストリーム内のデータフローが調整されます。 ただし、フィルターが停止またはフラッシュされている場合は、ブロックしないでください。

ブロックは CBaseRenderer::WaitForRenderTime メソッドによって制御され、CBaseRenderer::m_RenderEvent と CBaseRenderer::m_ThreadSignal の 2 つのイベントを待機します。 m_RenderEvent イベントは、プレゼンテーション時間が到着したときに通知されます。 m_ThreadSignal イベントは、 が FALSE の値で呼び出されるとSourceThreadCanWait通知されます。 値 TRUE を指定して を呼び出すとSourceThreadCanWait、イベントがリセットされます。

CBaseRenderer::Stop メソッドと CBaseRenderer::BeginFlush メソッドは、値 FALSE を指定してを呼び出します SourceThreadCanWait (ストリーミング スレッドを解放します)。 CBaseRenderer::P auseCBaseRenderer::Run、および CBaseRenderer::EndFlush メソッドは、値 TRUE を指定して を呼び出しますSourceThreadCanWait

要件

要件
ヘッダー
Renbase.h (Streams.h を含む)
ライブラリ
Strmbase.lib (製品版ビルド);
Strmbasd.lib (デバッグ ビルド)

関連項目

CBaseRenderer クラス