IMediaFilter::SetSyncSource 方法 (strmif.h)

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

方法 SetSyncSource 设置引用时钟。

语法

HRESULT SetSyncSource(
  [in] IReferenceClock *pClock
);

参数

[in] pClock

指向时钟的 IReferenceClock 接口的指针,或 NULL。 如果此参数为 NULL,则筛选器图不使用引用时钟,并且所有筛选器都会尽快运行。

返回值

如果成功,则返回S_OK,或返回指示错误原因的 HRESULT 值。

备注

筛选器图中的所有筛选器共享相同的引用时钟,以便保持同步。 流时间是从引用时钟计算的。 呈现器筛选器使用引用时钟来计划呈现样本的时间。 如果没有引用时钟,呈现器筛选器在样本到达时立即呈现每个样本。

此方法由所有 DirectShow 筛选器以及 Filter Graph 管理器实现。

筛选器实现

当图形运行时,Filter Graph 管理器在图形中的每个筛选器上调用此方法,以通知它们图形引用时钟。 使用此方法存储 IReferenceClock 指针。 递增存储指针上的引用计数。 在从图形中删除筛选器之前,筛选器关系图管理器会再次调用值为 NULLSetSyncSource。 释放存储的指针并将其设置为 NULL

CBaseFilter 类实现此方法;请参阅 CBaseFilter::SetSyncSource

请注意,筛选器不能使用此方法来选择图形时钟。 在筛选器中,此方法的唯一功能是通知筛选器图形使用的时钟。 筛选器可以通过公开 IReferenceClock 接口来提供引用时钟。 有关详细信息,请参阅 DirectShow 中的时间和时钟

应用程序使用

应用程序可以通过在 Filter Graph Manager 上调用 SetSyncSource 来替代默认时钟。 除非有特定原因希望使用另一个时钟,否则不要这样做。 还可以通过调用值为 NULLSetSyncSource,将图形设置为不使用任何引用时钟。 可以执行此操作以尽快处理示例。 有关详细信息,请参阅 设置图形时钟

应用程序绝不应在筛选器上调用此方法。

要求

   
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 strmif.h (包括 Dshow.h)
Library Strmiids.lib

另请参阅

错误和成功代码

IFilterGraph::SetDefaultSyncSource

IMediaFilter 接口