IMFTransform::P rocessEvent 方法 (mftransform.h)

将事件发送到此媒体基础转换 (MFT) 的输入流。

语法

HRESULT ProcessEvent(
  [in] DWORD         dwInputStreamID,
  [in] IMFMediaEvent *pEvent
);

parameters

[in] dwInputStreamID

输入流标识符。 若要获取流标识符列表,请调用 IMFTransform::GetStreamIDs

[in] pEvent

指向事件对象的 IMFMediaEvent 接口的指针。

返回值

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

返回代码 说明
S_OK
方法成功。
E_NOTIMPL
未实现。
MF_E_INVALIDSTREAMNUMBER
流号无效。
MF_E_TRANSFORM_TYPE_NOT_SET
媒体类型未在一个或多个流上设置。
MF_S_TRANSFORM_DO_NOT_PROPAGATE_EVENT
管道不应传播事件。

注解

MFT 可以处理向下游发送事件,也可以让管道执行此操作,如返回值所示:

  • E_NOTIMPL:MFT 会忽略所有事件,管道应向下游发送所有事件。 管道收到此返回值后,它可能不会再次调用 ProcessEvent
  • S_OK:MFT 已检查此事件,但管道应将事件发送到下游。 在内部,MFT 可能会以某种方式响应事件,也可能忽略该事件。
  • MF_S_TRANSFORM_DO_NOT_PROPAGATE_EVENT:管道不应将此事件传播到下游。 MFT 会将事件发送到下游,否则 MFT 将使用事件,而不是将它发送到下游。 仅当事件应在此 MFT 处停止且不进一步下游时,MFT 才应使用 事件。 但在大多数情况下,事件应向下游传播。
若要将事件发送到下游,当客户端调用 IMFTransform::P rocessOutput 时,MFT 会将 事件添加到 MFT_OUTPUT_DATA_BUFFER 结构的 pEvents 成员中的客户端提供的集合对象。

必须使用事件之前和之后的样本进行序列化。 将 事件附加到事件后面的输出示例。 (管道将首先处理事件,然后处理 sample.) 如果 MFT 在调用 IMFTransform::P rocessInputProcessOutput 之间保留一个或多个样本,MFT 应处理所有下游事件的发送,因为在这种情况下管道无法将输入样本与输出样本相关联。

如果 MFT 不保留样本,并且不需要检查任何事件,它可以返回 E_NOTIMPL

如果在包括 mftransform.h 之前定义了 MFT_UNIQUE_METHOD_NAMES ,则此方法将重命名为 MFTProcessEvent。 请参阅 创建混合 DMO/MFT 对象

要求

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

另请参阅

IMFTransform

Media Foundation 转换