IMFRateControl::SetRate 方法 (mfidl.h)

设置播放速率。

语法

HRESULT SetRate(
  [in] BOOL  fThin,
  [in] float flRate
);

parameters

[in] fThin

如果 为 TRUE,则精简媒体流。 否则,不会精简流。 对于媒体源和多路复用器,当此参数为 TRUE 时,对象必须精简流。 对于下游转换(如解码器和多路复用器),此参数提供信息;它通知对象输入流已精简。 有关信息,请参阅 关于速率控制

[in] flRate

请求的播放速率。 正值表示正向播放,负值表示反向播放,零表示 (源传送单帧) 清理。

返回值

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

返回代码 说明
S_OK
方法成功。
MF_E_REVERSE_UNSUPPORTED
对象不支持反向播放。
MF_E_THINNING_UNSUPPORTED
对象不支持精简。
MF_E_UNSUPPORTED_RATE
对象不支持请求的播放速率。
MF_E_UNSUPPORTED_RATE_TRANSITION
在运行状态下,对象无法更改为新速率。

注解

媒体会话可阻止速率边界之间的某些转换,具体取决于当前播放状态:

播放状态 向前/反向 向前/零 反向/零
正在运行
已暂停
已停止
 

如果转换不受支持,该方法将返回 MF_E_UNSUPPORTED_RATE_TRANSITION

当媒体源完成对 SetRate 的调用时,它会发送 MESourceRateChanged 事件。 其他管道组件不发送此事件。

如果媒体源在精简播放和非精简播放之间切换,则流会发送 MEStreamThinMode 事件来指示转换。 来自媒体源的事件与媒体流中的事件不同步。 收到 MESourceRateChanged 事件后,仍可以接收在流切换到精简或非精简模式之前排队的样本。 MEStreamThinMode 事件标记发生转换的流中的确切点。

当媒体会话完成对 SetRate 的调用时,它会发送 MESessionRateChanged 事件。

要求

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

另请参阅

如何在媒体会话上设置播放速率

IMFRateControl