Freigeben über


Dynamische Formatänderungen

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

Wenn zwei Filter eine Verbindung herstellen, stimmen sie einem Medientyp zu, der das Format der Daten beschreibt, die der upstream-Filter liefert. In den meisten Fällen ist 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 Medientypen wechselt, wird er als dynamische Formatänderungbezeichnet. 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 korrekt reagieren, wenn ein anderer Filter ein neues Format anfordert.

DirectShow definiert verschiedene Mechanismen für dynamische Formatänderungen, je nach Status des Filterdiagramms und dem erforderlichen Änderungstyp.

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

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

  • QueryAccept (Downstream) wird verwendet, wenn eine Ausgabenadel eine Formatänderung an den nachgelagerten Peer vorschlägt, aber nur, wenn das neue Format keinen größeren Puffer erfordert.
  • QueryAccept (Upstream)- wird verwendet, wenn ein Eingabenadel eine Formatänderung an seinem upstream-Peer vorschlägt. Das neue Format kann dieselbe Größe aufweisen oder größer sein.
  • ReceiveConnection- wird verwendet, wenn eine Ausgabenadel eine Formatänderung an den nachgelagerten Peer vorschlägt, und das neue Format erfordert einen größeren Puffer.

Behandeln von Formatänderungen aus dem Videorenderer-