Freigeben über


DMO-Architektur

[Das dieser Seite zugeordnete Feature DirectShow-ist ein Legacyfeature. Es wurde von MediaPlayer, IMFMediaEngineund Audio/Video Capture in Media Foundationersetzt. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code MediaPlayer-, IMFMediaEngine und Audio-/Videoaufnahme in Media Foundation anstelle von DirectShow-verwendet, wenn möglich. Microsoft schlägt vor, dass vorhandener Code, der die Legacy-APIs verwendet, um die neuen APIs zu verwenden, falls möglich umgeschrieben werden.]

In diesem Abschnitt wird die allgemeine Architektur einer DMO beschrieben.

Streams

Ein DMO ist ein Objekt, das m Eingaben verwendet und n Ausgaben erzeugt. Die Eingaben und Ausgaben werden Datenströmeaufgerufen. Jede DMO verfügt über mindestens einen Datenstrom. Datenströme sind keine Objekte; sie werden einfach anhand der Indexnummer auf die DMO verwiesen. Die Anzahl der Datenströme wird zur Entwurfszeit festgelegt.

Medientypen

Alle Daten werden mithilfe eines Medientypseingegeben, der definiert, wie der Inhalt der Daten interpretiert wird. Beispielsweise ist 320 x 240 24-Bit RGB-Video ein Typ; 44,1-Kilohertz (kHz) 16-Bit-Stereo-PCM-Audio ist ein anderer Typ. Medientypen werden mithilfe der DMO_MEDIA_TYPE Struktur beschrieben. Bevor der Client daten verarbeiten kann, muss er den Medientyp für jeden Datenstrom auf der DMO festlegen.

In der Regel kann ein Datenstrom eine Reihe von Medientypen akzeptieren. Einige DMOs unterstützen eine breitere Palette von Typen als andere. Die DMO-Schnittstellen definieren Methoden für den Client, um die unterstützten Typen zu ermitteln. Beispielsweise kann ein DMO RGB-Video in einer beliebigen Bittiefe unterstützen, während ein anderer nur 24-Bit-RGB unterstützt. Außerdem kann ein DMO auf bestimmte Kombinationen von Eingaben und Ausgaben beschränkt sein. Wenn der Eingabetyp beispielsweise 16-Bit-Video ist, erfordert der Ausgabedatenstrom möglicherweise dieselbe Bittiefe. Der Client kann die bevorzugten Typen jedes Datenstroms aufzählen und dann bestimmte Kombinationen testen.

Puffer

Im Standard-DMO-Modell weist der Client separate Eingabepuffer und Ausgabepuffer zu. Sie füllt die Eingabepuffer mit Daten und liefert sie an die DMO, und das DMO schreibt neue Daten in die Ausgabepuffer.

Optional kann ein DMO die "direkte" Verarbeitung unterstützen. Bei der direkten Verarbeitung schreibt die DMO die Ausgabe direkt in den Eingabepuffer über die ursprünglichen Daten. Die direkte Verarbeitung beseitigt die Notwendigkeit separater Puffer. Andererseits ändert sie die ursprünglichen Daten, die für einige Anwendungen möglicherweise nicht akzeptabel sind.

Das Standardpuffermodell (nicht direkt) wird über die IMediaObject--Schnittstelle unterstützt. Alle DMOs müssen diese Schnittstelle implementieren. Wenn ein DMO die direkte Verarbeitung unterstützt, wird auch die IMediaObjectInPlace- Schnittstelle verfügbar gemacht. Der Client ist für die Zuweisung aller Puffer verantwortlich, sowohl für die Eingabe als auch für die Ausgabe.

über DMOs-