Vorteile von DMOs
[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde durch MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation ersetzt. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet. Microsoft schlägt vor, vorhandenen Code, der die Legacy-APIs verwendet, um nach Möglichkeit die neuen APIs zu verwenden.]
DMOs bieten die folgenden Vorteile:
- Sie sind im Allgemeinen kleiner und einfacher als DirectShow-Filter, da sie weniger Funktionalität unterstützen.
- Sie sind flexibler als DirectShow-Filter, da sie kein Filterdiagramm erfordern. Sie können sie mit DirectShow verwenden, wenn Sie die von DirectShow bereitgestellten Dienste benötigen, z. B. Synchronisierung, intelligente Verbindung, automatische Verarbeitung des Datenflusses und Threadverwaltung. Clients, die diese Dienste nicht benötigen, können direkt auf DMOs zugreifen.
- DMOs führen immer synchrone Datenverarbeitung durch, wodurch viele Threadingprobleme beseitigt werden, die Sie beim Schreiben eines Filters berücksichtigen müssen.
- Im Gegensatz zu herkömmlichen ACM- und VCM-Codecs basieren DMOs auf dem Component Object Model (COM), sodass sie über QueryInterface erweitert werden können.
- DMOs unterstützen ein allgemeineres Streamingmodell als ACM- oder VCM-Codecs. Wie DirectShow-Filter können DMOs mehrere Eingaben und mehrere Ausgaben unterstützen.
Aus diesen Gründen werden DMOs jetzt als Lösung zum Schreiben von Encodern, Decodern und Audioeffekten empfohlen. Je nach Den Anforderungen der Anwendung sind auch viele andere Szenarien möglich.
Unterschiede zwischen DMOs und DirectShow-Filtern
DirectShow-Filter können nicht außerhalb eines DirectShow-Filterdiagramms funktionieren. In DirectShow vermittelt der Filter Graph Manager zwischen der Anwendung und den Filtern. DirectShow-Filter erledigen die meiste Arbeit, die zum Streamen von Daten erforderlich ist, einschließlich:
- Zuweisung von Puffern.
- Aushandlung von Medientypen und Verbindungen mit anderen Filtern.
- Pushen von Daten durch das Filterdiagramm.
- Senden von Ereignissen an den Filter Graph-Manager.
- Synchronisieren mehrerer Threads.
Im Gegensatz dazu übernimmt eine DMO keines dieser Dinge. Stattdessen liegen diese Arten von Aufgaben in der Verantwortung des Clients, der die DMO verwendet. Der Client weist Puffer zu, füllt sie mit Daten und übermittelt sie an die DMO. Die DMO verarbeitet die Daten, und der Client ruft die resultierenden Ausgabepuffer ab.
Zugehörige Themen