次の方法で共有


CBaseRenderer::SourceThreadCanWait

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

構文

  virtual HRESULT SourceThreadCanWait(
    BOOL bCanWait
);

パラメータ

bCanWait

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

戻り値

S_OK を返す。

注意

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

ブロックは、CBaseRenderer::m_RenderEventCBaseRenderer::m_ThreadSignal の 2 つのイベントを待機する CBaseRenderer::WaitForRenderTime メソッドが制御する。m_RenderEvent イベントは、プレゼンテーション タイムになると通知される。m_ThreadSignal イベントは、値 FALSE で SourceThreadCanWait を呼び出すと通知される。このイベントは、値 TRUE で SourceThreadCanWait を呼び出すとリセットされる。

CBaseRenderer::Stop および CBaseRenderer::BeginFlush メソッドは値 FALSE で SourceThreadCanWait を呼び出す (ストリーミング スレッドを解放する)。CBaseRenderer::PauseCBaseRenderer::Run、および CBaseRenderer::EndFlush メソッドは、値 TRUE で SourceThreadCanWait を呼び出す。

参照