CBaseRenderer::SourceThreadCanWait
SourceThreadCanWait メソッドは、ストリーミング スレッドを保持または解放する。
構文
virtual HRESULT SourceThreadCanWait(
BOOL bCanWait
);
パラメータ
bCanWait
ストリーミング スレッドを保持するかどうかを示すブール値。TRUE の場合、以降のサンプルをレンダリングするまでフィルタが待機する間、ストリーミング スレッドがブロックされる。FALSE の場合、ストリーミング スレッドは解放される。
戻り値
S_OK を返す。
注意
値 FALSE を指定した SourceThreadCanWait メソッドの呼び出しは、ブロックされた IMemInputPin::Receive 呼び出しからフィルタを強制的に復帰させる。フィルタが実行中の場合、現在のサンプルのプレゼンテーション タイムまで、Receive の呼び出しをブロックする。フィルタがポーズ中の場合は、Receive の呼び出しを無期限にブロックする。この動作によって、ストリーム内のデータの流れを調整する。ただし、フィルタが停止中またはフラッシュ中の場合、ブロックは行わない。
ブロックは、CBaseRenderer::m_RenderEvent と CBaseRenderer::m_ThreadSignal の 2 つのイベントを待機する CBaseRenderer::WaitForRenderTime メソッドが制御する。m_RenderEvent イベントは、プレゼンテーション タイムになると通知される。m_ThreadSignal イベントは、値 FALSE で SourceThreadCanWait を呼び出すと通知される。このイベントは、値 TRUE で SourceThreadCanWait を呼び出すとリセットされる。
CBaseRenderer::Stop および CBaseRenderer::BeginFlush メソッドは値 FALSE で SourceThreadCanWait を呼び出す (ストリーミング スレッドを解放する)。CBaseRenderer::Pause、CBaseRenderer::Run、および CBaseRenderer::EndFlush メソッドは、値 TRUE で SourceThreadCanWait を呼び出す。
参照