Dynamische Formatänderungen

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

Wenn zwei Filter eine Verbindung herstellen, vereinbaren sie einen Medientyp, der das Format der Daten beschreibt, die der Upstream-Filter liefert. In den meisten Fällen wird der Medientyp für die Dauer der Verbindung festgelegt. DirectShow bietet jedoch eingeschränkte Unterstützung für Filter zum Ändern des Medientyps. Wenn ein Filter die Medientypen wechselt, wird dies als dynamische Formatänderung bezeichnet. Wenn Sie einen DirectShow-Filter schreiben, sollten Sie die Mechanismen für dynamische Formatänderungen kennen. Auch wenn ihr Filter solche Änderungen nicht unterstützt, sollte er ordnungsgemäß reagieren, wenn ein anderer Filter ein neues Format anfordert.

DirectShow definiert verschiedene Mechanismen für dynamische Formatänderungen, abhängig vom Zustand des Filterdiagramms und dem Typ der erforderlichen Änderung.

  • Wenn das Diagramm beendet wird, können die Pins den Medientyp erneut verbinden und neu aushandeln. Weitere Informationen finden Sie unter Erneutes Verbinden von Pins.
  • Einige Filter können Pins erneut verbinden, auch wenn das Diagramm aktiv ist (ausgeführt oder angehalten). Weitere Informationen zu diesem Mechanismus finden Sie unter Dynamische Erneute Verbindung.

Andernfalls gibt es drei mögliche Mechanismen zum Ändern des Formats, wenn das Diagramm aktiv ist, aber die betreffenden Filter keine dynamischen Pin-Verbindungen unterstützen:

  • QueryAccept (Downstream) wird verwendet, wenn eine Ausgabenadel dem nachgeschalteten Peer eine Formatänderung vorschlägt, aber nur, wenn das neue Format keinen größeren Puffer erfordert.
  • QueryAccept (Upstream) wird verwendet, wenn eine Eingabenadel dem Upstream Peer eine Formatänderung vorschlägt. Das neue Format kann die gleiche Größe oder größer sein.
  • ReceiveConnection wird verwendet, wenn ein Ausgabenadel dem nachgeschalteten Peer eine Formatänderung vorschlägt und das neue Format einen größeren Puffer erfordert.

Behandeln von Formatänderungen aus dem Videorenderer