LEEREN DES _ MFT-NACHRICHTENBEFEHLS _ _
Fordert eine Media Foundation Transform (MFT) an, um alle gespeicherten Daten zu leeren.
Message-Parameter
Keine.
Hinweise
Um diese Nachricht zu senden, rufen Sie DIETRANSFORM::P rocessMessage auf.
Nachdem diese Nachricht gesendet wurde, akzeptiert der angegebene Eingabestream keine Eingaben, bis der MFT alle Daten aus vorherigen Aufrufen von DURCHZEIGTransform::P rocessInput verarbeitet.
Der Entleerungsprozess variiert geringfügig zwischen synchronen MFTs und asynchronen MFTs:
Synchrone MFTs
- Nachdem der Client diese Nachricht gesendet hat, ruft er IN EINER -Schleife DEN WERTTRANSFORM::P rocessOutput auf, bis ProcessOutput den Fehlercode MF _ E TRANSFORM NEED MORE INPUT _ _ _ _ zurückgibt.
- Solange der MFT noch Daten zu verarbeiten hat, können weitere Aufrufe von ProcessInput nicht mehr möglich sein. MFT erzeugt weiterhin Eine Ausgabe, bis alle gespeicherten Daten verwendet werden. MFT verwirft alle Daten, die nicht in einem vollständigen Ausgabebeispiel verarbeitet werden können. (Es sollte z. B. ein teiler Videoframe ablegen.)
Asynchrone MFTs
- Der MFT sendet weiterhin METransformHaveOutput-Ereignisse, bis keine Daten mehr zu verarbeiten sind. Während dieser Zeit werden keine METransformNeedInput-Ereignisse gesendet.
- Nachdem der MFT das letzte METransformHaveOutput-Ereignis sendet, sendet er ein METransformDgreifComplete-Ereignis.
- Nach Abschluss des Leerens sendet MFT erst dann ein weiteres METransformNeedInput-Ereignis, wenn eine MFT _ MESSAGE NOTIFY START OF _ _ _ _ STREAM-Nachricht vom Client empfangen wird.
Nachdem der Client die MFT-Daten entleert hat, kann er weitere Eingabedaten senden. Das erste Beispiel nach dem Entleerungsvorgang muss über das Diskontinuitätsattribut (MFSampleExtension _ Discontinuity-Attribut) verfügen.
Hinweis
In früheren Versionen dieser Dokumentation wurde angegeben, dass der ulParam-Ereignisparameter ein Member der _ MFT _ DRAIN _ TYPE-Enumeration ist. Diese Antwort ist falsch. UlParam enthält einen Streambezeichner.
Implementierung
Ein asynchrones MFT muss nach dem Entleeren immer METransformDgreifComplete zurückgeben.
Ein synchroner MFT kann diese Meldung ignorieren und S _ OK zurückgeben, wenn die folgenden Bedingungen erfüllt sind:
- MFT speichert nie mehr als ein Eingabebeispiel gleichzeitig.
- Jedes Eingabebeispiel erzeugt ein einzelnes Ausgabebeispiel.
Andernfalls muss eine synchrone MFT diese Meldung implementieren.
Anforderungen
| Anforderung | Wert |
|---|---|
| Unterstützte Mindestversion (Client) |
Windows Nur [ Vista-Desktop-Apps] |
| Unterstützte Mindestversion (Server) |
Windows Nur Server [ 2008-Desktop-Apps] |
| Header |
|