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
- 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.
- 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
- MFT continua a inviare eventi METransformHaveOutput finché non contiene altri dati da elaborare. Non invia eventi METransformNeedInput durante questo periodo.
- Dopo che MFT invia l'ultimo evento METransformHaveOutput , invia un evento METransformDrainComplete .
- 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 |
|
Vedi anche