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

将此 Media Foundation 转换 (MFT) 上的输入流发送事件。

语法

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

参数

[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 处停止且不进一步下游时使用该事件。 但在大多数情况下,事件应下游传输。
若要向下游发送事件,MFT 会在客户端调用 IMFTransform::P rocessOutput 时,将事件添加到 MFT_OUTPUT_DATA_BUFFER 结构的 pEvents 成员中提供的集合对象。

事件必须使用之前和之后的示例进行序列化。 将事件附加到事件后面的输出示例。 (管道将首先处理事件,然后示例.) 如果 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

媒体基础转换