Freigeben über


Informationen zum Filter Graph-Manager

[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.]

Der Filter Graph-Manager ist ein COM-Objekt, das die Filter in einem Filtergraphen steuert. Es führt viele Funktionen aus, einschließlich der folgenden:

  • Koordinieren von Zustandsänderungen zwischen den Filtern.
  • Einrichten einer Referenzuhr.
  • Kommunikation von Ereignissen an die Anwendung.
  • Bereitstellen von Methoden für Anwendungen zum Erstellen des Filterdiagramms.

Jede dieser Funktionen wird hier kurz beschrieben. Details finden Sie an anderer Stelle in der Dokumentation.

Zustandsänderungen. Zustandsänderungen innerhalb von Filtern müssen in einer bestimmten Reihenfolge auftreten. Daher gibt die Anwendung keine Zustandsänderungsbefehle direkt an die Filter aus. Stattdessen wird dem Filter Graph-Manager ein einzelner Befehl zugewiesen, der den Befehl an jeden filter verteilt. Die Suche funktioniert auf ähnliche Weise: Die Anwendung gibt dem Filter Graph-Manager einen Seek-Befehl, der ihn an die Filter verteilt.

Referenzuhr. Alle Filter im Diagramm verwenden dieselbe Uhr, die als Referenzuhr bezeichnet wird. Die Referenzuhr stellt sicher, dass alle Streams synchronisiert werden. Die Zeit, zu der ein Videoframe oder ein Audiobeispiel gerendert werden soll, wird als Präsentationszeit bezeichnet. Die Präsentationszeit wird relativ zur Referenzuhr gemessen. Der Graph-Manager filtert eine Referenzuhr aus, in der Regel entweder die Uhr auf dem Sound Karte oder die Systemuhr.

Graphereignisse. Der Filter Graph-Manager verwendet eine Ereigniswarteschlange, um die Anwendung über Ereignisse zu informieren, die im Filtergraphen auftreten. Dieser Mechanismus ähnelt einer Windows-Nachrichtenschleife.

Methoden zur Grapherstellung. Der Filter Graph-Manager stellt Methoden für die Anwendung bereit, um dem Diagramm Filter hinzuzufügen, Filter mit anderen Filtern zu verbinden und Filter zu trennen.

Eine Funktion, die der Filter Graph-Manager nicht behandelt, ist das Verschieben von Daten von einem Filter zum nächsten. Dies geschieht durch die Filter selbst, über ihre Pin-Verbindungen. Die Verarbeitung erfolgt immer in einem separaten Thread.

Hinweis

Filter sind immer Freithreads, befinden sich im gleichen Prozess wie der Filter Graph-Manager und werden von prozessinternen Servern geladen. Daher werden Methodenaufrufe nicht zwischen Filtern oder zwischen Filtern und dem Filtergraph-Manager gemarshallt.

 

Datenfluss im Filtergraphen

Ereignisbenachrichtigung in DirectShow

Festlegen der Graphuhr

Zeit und Uhren in DirectShow