Suchen

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

Filter unterstützen die Suche über die IMediaSeeking-Schnittstelle . Die Anwendung fragt den Graph-Filter-Manager für IMediaSeeking ab und verwendet ihn zum Ausgeben von Suchbefehlen. Der Filter Graph-Manager verteilt jeden Suchbefehl an alle Rendererfilter im Graphen. Jeder Renderer übergibt den Befehl Upstream über die Ausgabepins der Upstream Filter, bis er einen Filter erreicht, der die Suche ausführen kann. In der Regel führt ein Quellfilter oder Parserfilter, z. B. der AVI-Splitter, den Suchvorgang aus.

Wenn ein Filter einen Suchvorgang ausführt, löscht er alle ausstehenden Daten. Das Ergebnis ist, die Latenz von Suchbefehlen zu minimieren, da vorhandene Daten aus dem Diagramm geleert werden. Nach einem Suchbefehl wird die Streamzeit auf null zurückgesetzt.

Das folgende Diagramm veranschaulicht die Abfolge der Ereignisse.

Ablauf der Ereignisse

Wenn ein Parserfilter über mehr als einen Ausgabenadel verfügt, wird in der Regel einer davon zum Annehmen von Suchbefehlen festgelegt. Die anderen Pins lehnen oder ignorieren alle empfangenen Suchbefehle. Auf diese Weise hält der Parser alle datenströme synchronisiert. Alle Ausgabepins sollten jedoch IMediaSeeking::GetCapabilities und IMediaSeeking::CheckCapabilities implementieren, um die Suchfunktionen des Filters zurückzugeben. Dadurch wird sichergestellt, dass der Filter Graph-Manager den richtigen Wert an die Anwendung zurückgibt.

Die IMediaPosition-Schnittstelle ist für Filter veraltet. Automatisierungsclients müssen diese Schnittstelle weiterhin im Filter Graph Manager verwenden, da IMediaSeeking nicht Automation-kompatibel ist, aber der Filter Graph Manager übersetzt alle IMediaPosition-Aufrufe in IMediaSeeking-Aufrufe .

Spülung

Zeit und Uhren in DirectShow