IMFTransform::P rocessEvent 方法 (mftransform.h)
将事件发送到此媒体基础转换 (MFT) 的输入流。
语法
HRESULT ProcessEvent(
[in] DWORD dwInputStreamID,
[in] IMFMediaEvent *pEvent
);
parameters
[in] dwInputStreamID
输入流标识符。 若要获取流标识符列表,请调用 IMFTransform::GetStreamIDs。
[in] pEvent
指向事件对象的 IMFMediaEvent 接口的指针。
返回值
该方法返回 HRESULT。 可能的值包括(但并不限于)下表中的项。
返回代码 | 说明 |
---|---|
|
方法成功。 |
|
未实现。 |
|
流号无效。 |
|
媒体类型未在一个或多个流上设置。 |
|
管道不应传播事件。 |
注解
MFT 可以处理向下游发送事件,也可以让管道执行此操作,如返回值所示:
- E_NOTIMPL:MFT 会忽略所有事件,管道应向下游发送所有事件。 管道收到此返回值后,它可能不会再次调用 ProcessEvent 。
- S_OK:MFT 已检查此事件,但管道应将事件发送到下游。 在内部,MFT 可能会以某种方式响应事件,也可能忽略该事件。
- MF_S_TRANSFORM_DO_NOT_PROPAGATE_EVENT:管道不应将此事件传播到下游。 MFT 会将事件发送到下游,否则 MFT 将使用事件,而不是将它发送到下游。 仅当事件应在此 MFT 处停止且不进一步下游时,MFT 才应使用 事件。 但在大多数情况下,事件应向下游传播。
必须使用事件之前和之后的样本进行序列化。 将 事件附加到事件后面的输出示例。 (管道将首先处理事件,然后处理 sample.) 如果 MFT 在调用 IMFTransform::P rocessInput 和 ProcessOutput 之间保留一个或多个样本,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 |