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

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

语法

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

参数

[in] dwInputStreamID

Stream标识符。 若要获取流标识符的列表,请调用 IMFDeviceTransform::GetStreamIDs

[in] pEvent

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

返回值

该方法返回 HRESULT。 可能的值包括但不限于下表中给出的值。

返回代码 说明
S_OK
事件已成功处理。 事件将顺流传播。
MF_E_INVALIDSTREAMNUMBER
传递的流 ID 无效。
MF_S_TRANSFORM_DO_NO_PROPOGATE_EVENT
指示设备 MFT 不希望进一步传播事件。
E_NOTIMPL
函数未实现。

注解

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

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

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

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

要求

要求
最低受支持的客户端 Windows 10 版本 1703
目标平台 Windows
标头 mftransform.h

另请参阅

IMFDeviceTransform