MFT_MESSAGE_COMMAND_DRAIN

请求媒体基础转换 (MFT) 以清空所有存储的数据。

Message 参数

无。

备注

若要发送此消息,请调用 IMFTransform::P rocessMessage

发送此消息后,指定的输入流不会接受输入,直到 MFT 处理以前调用 IMFTransform::P rocessInput 的所有数据。

同步 MMFT 和异步 MCT 之间的排出过程略有不同:

同步 MCT

  1. 客户端发送此消息后,它会在循环中调用 IMFTransform::P rocessOutput ,直到 ProcessOutputMF_E_TRANSFORM_NEED_MORE_INPUT返回错误代码。
  2. 只要 MFT 仍有要处理的数据,对 ProcessInput 的 进一步调用将失败。 MFT 会继续生成输出,直到它使用所有存储的数据。 MFT 会丢弃任何无法处理成完整输出示例的数据。 (例如,它应删除部分视频帧。)

异步 MCT

  1. MFT 会继续发送 METransformHaveOutput 事件,直到它没有要处理的数据。 在此期间,它不会发送 METransformNeedInput 事件。
  2. MFT 发送最后一个 METransformHaveOutput 事件后,会发送 METransformDrainComplete 事件。
  3. 排出完成后,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 [仅限桌面应用]
标头
Mftransform.h

请参阅

MFT_MESSAGE_TYPE

异步 MCT