IMFRateControl::SetRate 方法 (mfidl.h)
设置播放速率。
语法
HRESULT SetRate(
[in] BOOL fThin,
[in] float flRate
);
parameters
[in] fThin
如果 为 TRUE,则精简媒体流。 否则,不会精简流。 对于媒体源和多路复用器,当此参数为 TRUE 时,对象必须精简流。 对于下游转换(如解码器和多路复用器),此参数提供信息;它通知对象输入流已精简。 有关信息,请参阅 关于速率控制。
[in] flRate
请求的播放速率。 正值表示正向播放,负值表示反向播放,零表示 (源传送单帧) 清理。
返回值
该方法返回 HRESULT。 可能的值包括(但并不限于)下表中的项。
返回代码 | 说明 |
---|---|
|
方法成功。 |
|
对象不支持反向播放。 |
|
对象不支持精简。 |
|
对象不支持请求的播放速率。 |
|
在运行状态下,对象无法更改为新速率。 |
注解
媒体会话可阻止速率边界之间的某些转换,具体取决于当前播放状态:
播放状态 | 向前/反向 | 向前/零 | 反向/零 |
---|---|---|---|
正在运行 | 否 | 否 | 否 |
已暂停 | 否 | 是 | 否 |
已停止 | 是 | 是 | 是 |
如果转换不受支持,该方法将返回 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 |