Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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