Поделиться через


Метод IMFDeviceTransform::P rocessEvent (mftransform.h)

Метод ProcessEvent отправляет событие во входной поток в этом преобразовании Media Foundation (MFT).

Синтаксис

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

Параметры

[in] dwInputStreamID

идентификатор Stream. Чтобы получить список идентификаторов потоков, вызовите IMFDeviceTransform::GetStreamIDs.

[in] pEvent

Указатель на интерфейс IMFMediaEvent объекта события.

Возвращаемое значение

Метод возвращает HRESULT. Возможные значения включают, помимо прочего, значения, указанные в следующей таблице.

Код возврата Описание
S_OK
Событие успешно обработано. Событие будет распространяться вниз по потоку.
MF_E_INVALIDSTREAMNUMBER
Передан недопустимый идентификатор потока.
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 и не перемещаться дальше по нисходящему потоку. Но в большинстве случаев событие должно перемещаться вниз по течению.
Чтобы отправить событие вниз, MFT добавляет событие в объект коллекции, предоставленный клиентом в элементе pEvents структуры MFT_OUTPUT_DATA_BUFFER , когда клиент вызывает IMFTransform::P rocessOutput.

События должны быть сериализованы с примерами, которые поступают до и после них. Вложите событие в выходной пример, который следует за событием. (Конвейер сначала обработает событие, а затем образец.) Если MFT сдерживает одну или несколько выборок между вызовами IMFTransform::P rocessInput и IMFTransform::P rocessOutput, MFT должен обрабатывать отправку всех событий вниз, так как в этом случае конвейер не может сопоставить входные выборки с выходными выборками.

Если MFT не сдержит выборки и не нужно проверять какие-либо события, он может вернуть E_NOTIMPL.

Требования

Требование Значение
Минимальная версия клиента Windows 10 версии 1703
Целевая платформа Windows
Header mftransform.h

См. также раздел

IMFDeviceTransform