In-Place-Verarbeitung
[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde von MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation abgelöst. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code mediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet, wenn möglich. Microsoft schlägt vor, dass vorhandener Code, der die Legacy-APIs verwendet, so umgeschrieben wird, dass nach Möglichkeit die neuen APIs verwendet werden.]
Bestimmte Datentransformationen können durch direktes Ändern der Daten erreicht werden. Dies wird als direkte Verarbeitung bezeichnet. Viele Audio- und Videoeffekte können auf diese Weise erfolgen. Wenn ein DMO die direkte Verarbeitung unterstützt, wird die IMediaObjectInPlace-Schnittstelle verfügbar gemacht. Die direkte Verarbeitung ist im Allgemeinen effizienter als die Verwendung separater Puffer für die Ausgabe. (Eine wichtige Ausnahme ist, wenn sich der Puffer im Videospeicher befindet. In diesem Fall sind Lesevorgänge viel langsamer als Schreibvorgänge, sodass eine direkte Verarbeitung nicht empfohlen wird.)
Um Daten direkt zu verarbeiten, führt der Client einen einzelnen Aufruf der IMediaObjectInPlace::P rocess-Methode aus, anstatt ProcessInput - und ProcessOutput-Aufrufe zu trennen. Die Process-Methode ist synchron. die gesamte Verarbeitung erfolgt innerhalb des Aufrufs. Außerdem werden bei der direkten Verarbeitung keine IMediaBuffer-Objekte verwendet. Die Process-Methode verwendet einen Zeiger direkt auf den Speicherpuffer.
Ein DMO, der die direkte Verarbeitung unterstützt, muss weiterhin die IMediaObject-Schnittstelle implementieren, einschließlich der ProcessInput - und ProcessOutput-Methoden . Der Client kann auswählen, ob die direkte Verarbeitung oder separate Puffer verwendet werden sollen. Mischen Sie die beiden Verarbeitungstypen jedoch nicht. Wenn Sie Process aufrufen, rufen Sie Nicht ProcessInput oder ProcessOutput auf und umgekehrt.
Effektschwänze
Ein direktes DMO kann eine zusätzliche Ausgabe erstellen, nachdem die Eingabe beendet wurde. Dies wird als Effektschwanz bezeichnet. Beispielsweise wird ein Halleffekt fortgesetzt, nachdem die Eingabe die Stille erreicht hat. Wenn ein Effektfragment vorhanden ist, gibt die Process-Methode S_FALSE zurück. Nachdem die Anwendung alle Daten verarbeitet hat, kann sie das Effektfragment generieren, indem leere Puffer an die Process-Methode gesendet werden.
Zugehörige Themen