IMediaFilter::SetSyncSource 方法 (strmif.h)
[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayer、 IMFMediaEngine 和 音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
方法 SetSyncSource
设置引用时钟。
语法
HRESULT SetSyncSource(
[in] IReferenceClock *pClock
);
参数
[in] pClock
指向时钟的 IReferenceClock 接口的指针,或 NULL。 如果此参数为 NULL,则筛选器图不使用引用时钟,并且所有筛选器都会尽快运行。
返回值
如果成功,则返回S_OK,或返回指示错误原因的 HRESULT 值。
备注
筛选器图中的所有筛选器共享相同的引用时钟,以便保持同步。 流时间是从引用时钟计算的。 呈现器筛选器使用引用时钟来计划呈现样本的时间。 如果没有引用时钟,呈现器筛选器在样本到达时立即呈现每个样本。
此方法由所有 DirectShow 筛选器以及 Filter Graph 管理器实现。
筛选器实现
当图形运行时,Filter Graph 管理器在图形中的每个筛选器上调用此方法,以通知它们图形引用时钟。 使用此方法存储 IReferenceClock 指针。 递增存储指针上的引用计数。 在从图形中删除筛选器之前,筛选器关系图管理器会再次调用值为 NULL 的 SetSyncSource。 释放存储的指针并将其设置为 NULL。CBaseFilter 类实现此方法;请参阅 CBaseFilter::SetSyncSource。
请注意,筛选器不能使用此方法来选择图形时钟。 在筛选器中,此方法的唯一功能是通知筛选器图形使用的时钟。 筛选器可以通过公开 IReferenceClock 接口来提供引用时钟。 有关详细信息,请参阅 DirectShow 中的时间和时钟。
应用程序使用
应用程序可以通过在 Filter Graph Manager 上调用 SetSyncSource 来替代默认时钟。 除非有特定原因希望使用另一个时钟,否则不要这样做。 还可以通过调用值为 NULL 的 SetSyncSource,将图形设置为不使用任何引用时钟。 可以执行此操作以尽快处理示例。 有关详细信息,请参阅 设置图形时钟。应用程序绝不应在筛选器上调用此方法。
要求
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | strmif.h (包括 Dshow.h) |
Library | Strmiids.lib |