IMFMediaSink::SetPresentationClock 方法 (mfidl.h)

设置媒体接收器上的演示文稿时钟。

语法

HRESULT SetPresentationClock(
  [in] IMFPresentationClock *pPresentationClock
);

参数

[in] pPresentationClock

指向演示文稿时钟或 NULLIMFPresentationClock 接口的指针。 如果值为 NULL,媒体接收器将停止侦听以前设置的演示文稿时钟(如果有)。

返回值

该方法返回 HRESULT。 可能的值包括(但并不限于)下表中的项。

返回代码 说明
S_OK
方法成功。
MF_E_CLOCK_NO_TIME_SOURCE
演示文稿时钟没有时间源。 在演示文稿时钟上调用 SetTimeSource
MF_E_SHUTDOWN
已调用媒体接收器的 Shutdown 方法。

注解

在流式传输期间,媒体接收器尝试将速率与演示时钟匹配。 理想情况下,媒体接收器根据演示时钟正确显示样本,并且不会落后。 无速率媒体接收器是此规则的例外,因为它们会尽快使用样本并忽略时钟。 如果接收器是无速率的, 则 IMFMediaSink::GetCharacteristics 方法返回MEDIASINK_RATELESS标志。

演示文稿时钟必须具有时间源。 在调用此方法之前,在演示文稿时钟上调用 IMFPresentationClock::SetTimeSource 以设置演示文稿时间源。 某些媒体接收器提供时间源;因此,媒体接收器可能是其自己的演示文稿时钟的时间源。 但是,无论哪个对象提供时间源,媒体接收器都必须尝试将速率与 pPresentationClock 中指定的时钟匹配。 如果媒体接收器无法与外部时间源匹配速率,则媒体接收器的 IMFMediaSink::GetCharacteristics 方法检索MEDIASINK_CANNOT_MATCH_CLOCK标志。 在这种情况下, SetPresentationClock 仍将成功,但结果不会是最佳结果。 接收器可能无法快速呈现样本,以便与演示时钟匹配速率。

如果 pPresentationClock 为非 NULL,则媒体接收器必须在演示文稿时钟上调用 IMFPresentationClock::AddClockStateSink 来注册时钟状态通知。 如果使用新的演示文稿时钟再次调用该方法,或者 pPresentationClockNULL,则媒体接收器必须调用 IMFPresentationClock::RemoveClockStateSink ,以便从上一个时钟取消注册自身。

所有媒体接收器都必须支持此方法。

要求

   
最低受支持的客户端 Windows Vista [桌面应用|UWP 应用]
最低受支持的服务器 Windows Server 2008 [桌面应用|UWP 应用]
目标平台 Windows
标头 mfidl.h
Library Mfuuid.lib

另请参阅

IMFMediaSink

媒体接收器

演示文稿时钟