In-Place-Verarbeitung

Bestimmte Datentransformationen können durch direktes Ändern der Daten durchgeführt werden. Dies wird als "In-Place-Verarbeitung" bezeichnet. Viele Audio- und Videoeffekte können auf diese Weise durchgeführt werden. Wenn ein DMO die verarbeitung direkt unterstützt, macht er die IMediaObjectInPlace-Schnittstelle verfügbar. Die verarbeitung vor Ort ist im Allgemeinen effizienter als die Verwendung separater Puffer für die Ausgabe. (Eine hauptausnahme ist, wenn sich der Puffer im Videospeicher befindet. In diesem Fall sind Lesevorgänge viel langsamer als Schreibvorgänge, daher wird keine verarbeitung vor Ort empfohlen.)

Um Daten direkt zu verarbeiten, ruft der Client die IMediaObjectInPlace::P rocess-Methode auf, anstatt die Aufrufe von ProcessInput und ProcessOutput voneinander zu trennen. Die Process-Methode ist synchron. die Verarbeitung erfolgt innerhalb des Aufrufs. Außerdem werden bei der direkt verarbeiteten Verarbeitung keine IMediaBuffer-Objekte verwendet. Die Process-Methode verwendet einen Zeiger direkt auf den Speicherpuffer.

Ein DMO, der die verarbeitung direkt unterstützt, muss weiterhin die IMediaObject-Schnittstelle implementieren, einschließlich der Methoden ProcessInput und ProcessOutput. Der Client kann auswählen, ob die in-place-Verarbeitung oder separate Puffer verwendet werden. Mischen Sie jedoch nicht die beiden Verarbeitungstypen. Wenn Sie Process aufrufen, rufen Sie processInput oder ProcessOutput nicht auf und umgekehrt.

Effect Tails

Eine in-place-DMO erstellt möglicherweise eine zusätzliche Ausgabe, nachdem die Eingabe beendet wurde. Dies wird als Effektende bezeichnet. Beispielsweise wird ein Halleffekt fortgesetzt, nachdem die Eingabe Stille erreicht hat. Wenn ein Effektende vorkommt, gibt die Process-Methode S _ FALSE zurück. Nachdem die Anwendung alle Daten verarbeitet hat, kann sie das Effektende generieren, indem leere Puffer an die Process-Methode senden.

Direktes Hosten DMO