CBaseRenderer.SourceThreadCanWait メソッド
[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayer、IMFMediaEngine、Audio/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 ause、CBaseRenderer::Run、および CBaseRenderer::EndFlush メソッドは、値 TRUE を指定して を呼び出しますSourceThreadCanWait
。
要件
要件 | 値 |
---|---|
ヘッダー |
|
ライブラリ |
|