MFT_MESSAGE_COMMAND_DRAIN
请求媒体基础转换 (MFT) 以清空所有存储的数据。
Message 参数
无。
备注
若要发送此消息,请调用 IMFTransform::P rocessMessage。
发送此消息后,指定的输入流不会接受输入,直到 MFT 处理以前调用 IMFTransform::P rocessInput 的所有数据。
同步 MMFT 和异步 MCT 之间的排出过程略有不同:
同步 MCT
- 客户端发送此消息后,它会在循环中调用 IMFTransform::P rocessOutput ,直到 ProcessOutputMF_E_TRANSFORM_NEED_MORE_INPUT返回错误代码。
- 只要 MFT 仍有要处理的数据,对 ProcessInput 的 进一步调用将失败。 MFT 会继续生成输出,直到它使用所有存储的数据。 MFT 会丢弃任何无法处理成完整输出示例的数据。 (例如,它应删除部分视频帧。)
异步 MCT
- MFT 会继续发送 METransformHaveOutput 事件,直到它没有要处理的数据。 在此期间,它不会发送 METransformNeedInput 事件。
- MFT 发送最后一个 METransformHaveOutput 事件后,会发送 METransformDrainComplete 事件。
- 排出完成后,MFT 不会发送另一个 METransformNeedInput 事件,直到收到来自客户端 的MFT_MESSAGE_NOTIFY_START_OF_STREAM 消息。
客户端排空 MFT 后,客户端可以发送更多输入数据。 排出操作后的第一个示例必须具有非连续特性 (MFSampleExtension_Discontinuity 属性) 。
注意
本文档的早期版本指出 ulParam 事件参数是 _MFT_DRAIN_TYPE 枚举的成员。 错误。 ulParam 包含流标识符。
实现
异步 MFT 在清空后必须始终返回 METransformDrainComplete 。
如果满足以下条件,同步 MFT 可以忽略此消息并返回S_OK:
- MFT 从不一次存储多个输入样本。
- 每个输入示例生成单个输出示例。
否则,同步 MFT 必须实现此消息。
要求
要求 | 值 |
---|---|
最低受支持的客户端 |
Windows Vista [仅限桌面应用] |
最低受支持的服务器 |
Windows Server 2008 [仅限桌面应用] |
标头 |
|
请参阅