IMFMediaSink::SetPresentationClock 方法 (mfidl.h)
设置媒体接收器上的演示时钟。
语法
HRESULT SetPresentationClock(
[in] IMFPresentationClock *pPresentationClock
);
parameters
[in] pPresentationClock
指向表示时钟的 IMFPresentationClock 接口的指针,或 NULL。 如果值为 NULL,则媒体接收器将停止侦听先前设置的演示时钟(如果有)。
返回值
该方法返回 HRESULT。 可能的值包括(但并不限于)下表中的项。
返回代码 | 说明 |
---|---|
|
方法成功。 |
|
演示时钟没有时间源。 在演示文稿时钟上调用 SetTimeSource 。 |
|
已调用媒体接收器的 Shutdown 方法。 |
注解
在流式处理期间,媒体接收器会尝试将速率与演示时钟匹配。 理想情况下,媒体接收器根据演示时钟在正确的时间显示样本,并且不会落后。 无速率媒体接收器是此规则的例外,因为它们会尽快使用样本并忽略时钟。 如果接收器是无速率的, 则 IMFMediaSink::GetCharacteristics 方法将返回MEDIASINK_RATELESS标志。
演示时钟必须具有时间源。 在调用此方法之前,请在演示时钟上调用 IMFPresentationClock::SetTimeSource 以设置表示时间源。 某些媒体接收器提供时间源;因此,媒体接收器可能是其自己的呈现时钟的时间源。 但是,无论哪个对象提供时间源,媒体接收器都必须尝试将速率与 pPresentationClock 中指定的时钟匹配。 如果媒体接收器无法将速率与外部时间源匹配,则媒体接收器的 IMFMediaSink::GetCharacteristics 方法将检索MEDIASINK_CANNOT_MATCH_CLOCK标志。 在这种情况下, SetPresentationClock 仍将成功,但结果不会最佳。 接收器可能无法以足够快的速度呈现样本,无法将速率与演示时钟匹配。
如果 pPresentationClock 为非 NULL,媒体接收器必须通过在演示文稿时钟上调用 IMFPresentationClock::AddClockStateSink 来注册时钟状态通知。 如果使用新的呈现时钟再次调用方法,或者 pPresentationClock 为 NULL,则媒体接收器必须调用 IMFPresentationClock::RemoveClockStateSink 以从上一个时钟取消注册自身。
所有媒体接收器都必须支持此方法。
要求
最低受支持的客户端 | Windows Vista [桌面应用 | UWP 应用] |
最低受支持的服务器 | Windows Server 2008 [桌面应用 | UWP 应用] |
目标平台 | Windows |
标头 | mfidl.h |
Library | Mfuuid.lib |