MFT_MESSAGE_COMMAND_DRAIN
Solicita uma MFT (transformação do Media Foundation) para esvaziar todos os dados armazenados.
Parâmetro message
Nenhum.
Comentários
Para enviar essa mensagem, chame IMFTransform::P rocessMessage.
Depois que essa mensagem é enviada, o fluxo de entrada especificado não aceita entrada até que o MFT processe todos os dados de chamadas anteriores para IMFTransform::P rocessInput.
O processo de drenagem varia ligeiramente entre MFTs síncronos e MFTs assíncronos:
MFTs síncronos
- Depois que o cliente envia essa mensagem, ele chama IMFTransform::P rocessOutput em um loop, até que ProcessOutput retorne o código de erro MF_E_TRANSFORM_NEED_MORE_INPUT.
- Desde que o MFT ainda tenha dados a serem processados, novas chamadas para ProcessInput falharão. O MFT continua a produzir saída até usar todos os dados armazenados. O MFT descarta todos os dados que não podem ser processados em um exemplo de saída completo. (Por exemplo, ele deve remover um quadro de vídeo parcial.)
MFTs assíncronos
- O MFT continua a enviar eventos METransformHaveOutput até que não tenha mais dados para processar. Ele não envia eventos METransformNeedInput durante esse tempo.
- Depois que o MFT envia o último evento METransformHaveOutput , ele envia um evento METransformDrainComplete .
- Após a conclusão da drenagem, o MFT não envia outro evento METransformNeedInput até receber uma mensagem MFT_MESSAGE_NOTIFY_START_OF_STREAM do cliente.
Depois que o cliente tiver esvaziado o MFT, o cliente poderá enviar mais dados de entrada. O primeiro exemplo após a operação de esvaziamento deve ter o atributo de descontinuidade (atributo MFSampleExtension_Discontinuity ).
Observação
Versões anteriores desta documentação afirmavam que o parâmetro de evento ulParam é um membro da enumeração _MFT_DRAIN_TYPE . Incorreto. O ulParam contém um identificador de fluxo.
Implementação
Um MFT assíncrono sempre deve retornar METransformDrainComplete depois de ser drenado.
Um MFT síncrono pode ignorar essa mensagem e retornar S_OK se as seguintes condições forem verdadeiras:
- O MFT nunca armazena mais de uma amostra de entrada por vez.
- Cada exemplo de entrada produz um único exemplo de saída.
Caso contrário, um MFT síncrono deve implementar essa mensagem.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte |
Windows Vista [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte |
Windows Server 2008 [somente aplicativos da área de trabalho] |
Cabeçalho |
|
Confira também