Compartilhar via


Método IMFDeviceTransform::P rocessEvent (mftransform.h)

O método ProcessEvent envia um evento para um fluxo de entrada nesta MFT (transformação do Media Foundation).

Sintaxe

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

Parâmetros

[in] dwInputStreamID

Stream identificador. Para obter a lista de identificadores de fluxo, chame IMFDeviceTransform::GetStreamIDs.

[in] pEvent

Ponteiro para a interface IMFMediaEvent de um objeto de evento.

Retornar valor

O método retorna um HRESULT. Os valores possíveis incluem, mas não se limitam aos valores fornecidos na tabela a seguir.

Código de retorno Descrição
S_OK
O evento foi processado com êxito. O evento será propagado para baixo.
MF_E_INVALIDSTREAMNUMBER
Uma ID de fluxo inválida foi passada.
MF_S_TRANSFORM_DO_NO_PROPOGATE_EVENT
Indica que o MFT do dispositivo não deseja que o evento seja propagado ainda mais.
E_NOTIMPL
A função não é implementada.

Comentários

Um MFT pode lidar com o envio do evento downstream ou pode permitir que o DTM faça isso, conforme indicado pelo valor retornado:

  • E_NOTIMPL: O MFT ignora todos os eventos e o DTM deve enviar todos os eventos downstream. Depois que o pipeline receber esse valor retornado
  • S_OK: O MFT examinou esse evento, mas o DTM deve enviar o evento downstream. Internamente, o MFT pode responder ao evento de alguma forma ou pode ignorar o evento.
  • MF_S_TRANSFORM_DO_NOT_PROPAGATE_EVENT: O DTM não deve propagar esse evento downstream. O MFT enviará o evento downstream ou o MFT consumirá o evento e não o enviará downstream. O MFT só deve consumir o evento se o evento deve parar neste MFT e não viajar mais downstream. Mas, na maioria dos casos, o evento deve viajar downstream.
Para enviar o evento downstream, o MFT adiciona o evento ao objeto de coleção fornecido pelo cliente no membro pEvents da estrutura MFT_OUTPUT_DATA_BUFFER , quando o cliente chama IMFTransform::P rocessOutput.

Os eventos devem ser serializados com os exemplos que vêm antes e depois deles. Anexe o evento ao exemplo de saída que segue o evento. (O pipeline processará o evento primeiro e, em seguida, o exemplo.) Se um MFT retém um ou mais exemplos entre chamadas para IMFTransform::P rocessInput e IMFTransform::P rocessOutput, o MFT deve lidar com o envio de todos os eventos downstream, pois, nessa situação, o pipeline não pode correlacionar amostras de entrada com amostras de saída.

Se um MFT não reter amostras e não precisar examinar nenhum evento, ele poderá retornar E_NOTIMPL.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 10, versão 1703
Plataforma de Destino Windows
Cabeçalho mftransform.h

Confira também

IMFDeviceTransform