IMFMediaStream::RequestSample 方法 (mfidl.h)
从媒体源请求示例。
语法
HRESULT RequestSample(
[in] IUnknown *pToken
);
参数
[in] pToken
指向用作请求令牌的 对象的 IUnknown 接口的指针。 调用方必须实现此对象。 此参数可以为 NULL。 请参阅“备注”。
返回值
该方法返回 HRESULT。 可能的值包括(但并不限于)下表中的项。
返回代码 | 说明 |
---|---|
|
方法成功。 |
|
已到达流的末尾。 |
|
媒体源已停止。 |
|
已调用源的 Shutdown 方法。 |
注解
如果 pToken 不为 NULL,则媒体流在 pToken 上调用 AddRef,并将令牌置于先入先出队列中。
当下一个示例可用时,媒体流将执行以下操作:
- 从队列中拉取第一个令牌。
- 设置媒体示例 上的 MFSampleExtension_Token 属性。 属性数据是指向令牌对象的指针。
- 发送 MEMediaSample 事件。 事件数据是指向媒体示例的 IMFSample 接口的指针。
- 对令牌调用 Release 。
调用方应监视请求令牌上的引用计数。 如果媒体流发送 MEMediaSample 事件,请从示例中获取 MFSampleExtension_Token 属性,并将属性值与令牌匹配。 如果令牌的引用计数下降到零,并且你未收到 MEMediaSample 事件,则表示请求已删除。
由于媒体基础管道是多线程的,源的 RequestSample 方法可能会在源停止后被调用。 如果停止媒体源,该方法应返回 MF_E_MEDIA_SOURCE_WRONGSTATE。 管道不会将此返回代码视为错误条件。 如果源返回任何其他错误代码,则管道会将其视为严重错误并停止会话。
注意 早期版本的文档列出了这种情况的错误错误代码。
如果暂停媒体源,该方法会成功,但在再次启动源之前,流不会传递示例。
如果媒体源在处理数据时异步遇到错误,它应通过以下方式之一发出错误信号 (,但不能同时) :
- 从下一个 RequestSample 调用返回错误代码。
- 发送 MEError 事件。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista [桌面应用 | UWP 应用] |
最低受支持的服务器 | Windows Server 2008 [桌面应用 | UWP 应用] |
目标平台 | Windows |
标头 | mfidl.h |
Library | Mfuuid.lib |