Condividi tramite


MFT_MESSAGE_COMMAND_DRAIN

Richiede una trasformazione MFT (Media Foundation) per svuotare tutti i dati archiviati.

Parametro message

No.

Osservazioni

Per inviare questo messaggio, chiama IMFTransform::P rocessMessage.

Dopo l'invio di questo messaggio, il flusso di input specificato non accetta input finché MFT elabora tutti i dati delle chiamate precedenti a IMFTransform::P rocessInput.

Il processo di svuotamento varia leggermente tra le MFC sincrone e le MFP asincrone:

MFT sincroni

  1. Dopo l'invio del messaggio, il client chiama IMFTransform::P rocessOutput in un ciclo, fino a quando ProcessOutput non restituisce il codice di errore MF_E_TRANSFORM_NEED_MORE_INPUT.
  2. Purché MFT disponga ancora di dati da elaborare, le chiamate aggiuntive a ProcessInput avranno esito negativo. MFT continua a produrre output fino a quando non usa tutti i dati archiviati. MFT rimuove tutti i dati che non possono essere elaborati in un esempio di output completo. Ad esempio, deve eliminare un fotogramma video parziale.

MFP asincroni

  1. MFT continua a inviare eventi METransformHaveOutput finché non contiene altri dati da elaborare. Non invia eventi METransformNeedInput durante questo periodo.
  2. Dopo che MFT invia l'ultimo evento METransformHaveOutput , invia un evento METransformDrainComplete .
  3. Al termine dello svuotamento, MFT non invia un altro evento METransformNeedInput finché non riceve un messaggio MFT_MESSAGE_NOTIFY_START_OF_STREAM dal client.

Dopo che il client ha svuotato il MFT, il client può inviare più dati di input. Il primo esempio dopo l'operazione di svuotamento deve avere l'attributo di discontinuità (attributo MFSampleExtension_Discontinuity ).

Nota

Le versioni precedenti di questa documentazione hanno dichiarato che il parametro di evento ulParam è un membro dell'enumerazione _MFT_DRAIN_TYPE . Risposta errata. UlParam contiene un identificatore di flusso.

 

Implementazione

Un MFT asincrono deve sempre restituire METransformDrainComplete dopo che è stato svuotato.

Un MFT sincrono può ignorare questo messaggio e restituire S_OK se sono soddisfatte le condizioni seguenti:

  • MFT non archivia mai più di un campione di input alla volta.
  • Ogni esempio di input produce un singolo esempio di output.

In caso contrario, un MFT sincrono deve implementare questo messaggio.

Requisiti

Requisito Valore
Client minimo supportato
Windows Vista [solo app desktop]
Server minimo supportato
Windows Server 2008 [solo app desktop]
Intestazione
Mftransform.h

Vedi anche

MFT_MESSAGE_TYPE

MFP asincroni