Compartilhar via


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

Envia um evento para um fluxo de entrada nesta transformação do Media Foundation (MFT).

Sintaxe

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

Parâmetros

[in] dwInputStreamID

Identificador de fluxo de entrada. Para obter a lista de identificadores de fluxo, chame IMFTransform::GetStreamIDs.

[in] pEvent

Ponteiro para a interface IMFMediaEvent de um objeto de evento.

Valor retornado

O método retorna um HRESULT. Os possíveis valores incluem, mas sem limitação, aqueles na tabela a seguir.

Código de retorno Descrição
S_OK
O método foi bem-sucedido.
E_NOTIMPL
Não implementado.
MF_E_INVALIDSTREAMNUMBER
Número de fluxo inválido.
MF_E_TRANSFORM_TYPE_NOT_SET
O tipo de mídia não está definido em um ou mais fluxos.
MF_S_TRANSFORM_DO_NOT_PROPAGATE_EVENT
O pipeline não deve propagar o evento.

Comentários

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

  • E_NOTIMPL: o MFT ignora todos os eventos e o pipeline deve enviar todos os eventos downstream. Depois que o pipeline recebe esse valor retornado, ele pode não chamar ProcessEvent novamente.
  • S_OK: o MFT examinou esse evento, mas o pipeline 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 pipeline 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 uma ou mais amostras entre chamadas para IMFTransform::P rocessInput e ProcessOutput, 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.

Se MFT_UNIQUE_METHOD_NAMES for definido antes de incluir mftransform.h, esse método será renomeado como MFTProcessEvent. Consulte Criando objetos DMO/MFT híbridos.

Requisitos

   
Cliente mínimo com suporte Windows Vista [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows Server 2008 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho mftransform.h
Biblioteca Mfuuid.lib

Confira também

IMFTransform

Transformações do Media Foundation