CBaseRenderer.SourceThreadCanWait 方法

[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayerIMFMediaEngine音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

方法 SourceThreadCanWait 保存或释放流式处理线程。

语法

virtual HRESULT SourceThreadCanWait(
   BOOL bCanWait
);

参数

bCanWait

指示是否保留流式处理线程的布尔值。 如果 为 TRUE,则在筛选器等待呈现下一个示例时阻止流式处理线程。 如果 为 FALSE,则释放流式处理线程。

返回值

返回 S_OK。

注解

SourceThreadCanWait调用值为 FALSE 的方法会强制筛选器从阻止的 IMemInputPin::Receive 调用返回。 筛选器运行时,它会阻止 接收 调用,直到当前示例的演示时间。 筛选器暂停时,会无限期阻止 接收 呼叫。 此行为可规范流中的数据流。 但是,当筛选器停止或刷新时,它不应阻止。

阻止由 CBaseRenderer::WaitForRenderTime 方法控制,该方法等待两个事件: CBaseRenderer::m_RenderEventCBaseRenderer::m_ThreadSignalm_RenderEvent事件在演示时间到来时发出信号。 调用 值为 FALSESourceThreadCanWait,将发出m_ThreadSignal事件信号。 使用值为 TRUE 的调用SourceThreadCanWait将重置事件。

CBaseRenderer::StopCBaseRenderer::BeginFlush 方法调用SourceThreadCanWaitFALSE (释放流式处理线程) 。 CBaseRenderer::P auseCBaseRenderer::RunCBaseRenderer::EndFlush 方法调用SourceThreadCanWaitTRUE

要求

要求
标头
Renbase.h (包括 Streams.h)

Strmbase.lib (零售版本) ;
Strmbasd.lib (调试生成)

另请参阅

CBaseRenderer 类