IMFDeviceTransform::P rocessEvent 方法 (mftransform.h)
ProcessEvent 方法将事件发送到此媒体基础转换 (MFT) 的输入流。
语法
HRESULT ProcessEvent(
[in] DWORD dwInputStreamID,
[in] IMFMediaEvent *pEvent
);
参数
[in] dwInputStreamID
Stream标识符。 若要获取流标识符的列表,请调用 IMFDeviceTransform::GetStreamIDs。
[in] pEvent
指向事件对象的 IMFMediaEvent 接口的指针。
返回值
该方法返回 HRESULT。 可能的值包括但不限于下表中给出的值。
返回代码 | 说明 |
---|---|
|
事件已成功处理。 事件将顺流传播。 |
|
传递的流 ID 无效。 |
|
指示设备 MFT 不希望进一步传播事件。 |
|
函数未实现。 |
注解
MFT 可以处理向下游发送事件,也可以让 DTM 执行此操作,如返回值所示:
- E_NOTIMPL: MFT 会忽略所有事件,DTM 应将所有事件发送到下游。 管道收到此返回值后
- S_OK: MFT 已检查此事件,但 DTM 应将事件发送到下游。 在内部,MFT 可能会以某种方式响应事件,也可能忽略该事件。
- MF_S_TRANSFORM_DO_NOT_PROPAGATE_EVENT: DTM 不应将此事件传播到下游。 MFT 会将事件发送到下游,否则 MFT 将使用事件,而不是将它发送到下游。 仅当事件应在此 MFT 处停止且不进一步下游时,MFT 才应使用 事件。 但在大多数情况下,事件应向下游传播。
必须使用事件之前和之后的样本进行序列化。 将 事件附加到事件后面的输出示例。 (管道将首先处理事件,然后处理 sample.) 如果 MFT 在调用 IMFTransform::P rocessInput 和 IMFTransform::P rocessOutput 之间保留一个或多个样本,MFT 应处理下游发送所有事件,因为在此情况下管道无法将输入样本与输出样本相关联。
如果 MFT 不保留样本,并且不需要检查任何事件,它可以返回 E_NOTIMPL。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 10 版本 1703 |
目标平台 | Windows |
标头 | mftransform.h |