Freigeben über


Filter für Überlagerungsmixer

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

Der Filter Overlay Mixer ist ein Videorenderer, der speziell für die DVD-Wiedergabe und die Übertragung von Videostreams mit Untertiteln in Zeile 21 entwickelt wurde. Der Overlay-Mixer unterstützt auch Videoporterweiterungen (VPEs), sodass er mit MPEG-2-Hardware-Decodern oder analogen TV-Tunern arbeiten kann, die Videos direkt an die Grafik Karte statt über den PCI-Bus senden.

Hinweis

Der Videomischrenderer 9 wird jetzt dem Filter "Überlagerungsmischer" vorgezogen, außer in VPE-Szenarien.

 

Der Overlay-Mixer verwendet DirectDraw zum Rendern. Es erfordert eine Überlagerungsoberfläche für die Grafik Karte. Der primäre Videostream sollte mit Pin 0 verbunden sein. Sekundärdatenströme (geschlossene Untertitel Grafiken oder DVD-Unterbilder) sind mit Pins 1 und höher verbunden. Der Überlagerungsmischer durchleuchtet die sekundären Streams direkt auf die primäre Oberfläche; sie werden nicht gemischt oder alpha gemischt.

Der Overlay-Mixer verwendet den Videorenderer für die Fensterverwaltung. Der Videorenderer stellt eine Verbindung mit dem Ausgabestift des Overlay-Mixers her.

Dieser Filter wird dem Filterdiagramm automatisch hinzugefügt, wenn Anwendungen die Schnittstellen IDvdGraphBuilder und ICaptureGraphBuilder2 verwenden, um das Diagramm zu erstellen. Der Filter Graph-Manager fügt dem Diagramm nicht automatisch den Überlagerungsmischer hinzu.

Hinweis

In der folgenden Tabelle sind die Medienuntertypen, die für Eingabestift 0 akzeptiert werden, hardwareabhängig. Der Überlagerungsmischer kann erst ermitteln, ob ein bestimmter Untertyp unterstützt wird, bis er die DirectDraw-Oberfläche erstellt. Daher kann ein Upstream Filter nur feststellen, ob ein Untertyp unterstützt wird, eine Verbindung mit diesem Untertyp herzustellen.

 

Bezeichnung Wert
Filterschnittstellen IAMOverlayFX, IAMVideoDecimationProperties, IBaseFilter, IDDrawExclModeVideo, IKsPropertySet, IMediaPosition, IMediaSeeking, IMixerOCX, IQualProp, IVPNotify, IVPNotify2
Eingabeheftmedientypen Haupttyp: MEDIATYPE_Video
Untertypen:
  • MEDIASUBTYPE_Overlay (nur Pin 0)
  • DirectDraw YUV-Formate (nur Pin 0)
  • DirectDraw VideoBeschleunigungsformate (nur Pin 0)
  • DirectDraw RGB-Formate (alle Eingabestifte)
Formattypen:
  • Format_VIDEOINFO
  • Format_VIDEOINFO2
Eingabenadelschnittstellen IAMVideoAccelerator, IKsPin, IKsPropertySet, IMemInputPin, IMixerPinConfig, IMixerPinConfig2, IOverlay (nur Pin 0), IPin, IPinConnection, IQualityControl, IVPNotify, IVPNotify2
Ausgabeheftmedientypen MEDIATYPE_Video, MEDIASUBTYPE_Overlay
Ausgabepinschnittstellen IMediaPosition, IMediaSeeking, IPin, IQualityControl
CLSID filtern CLSID_OverlayMixer
Eigenschaftenseite CLSID Keine Eigenschaftenseite.
Ausführbare Datei qdvd.dll
Verdienst MERIT_DO_NOT_USE
Filterkategorie CLSID_LegacyAmFilterCategory

 

Bemerkungen

Der Overlay-Mixer verwendet die Zielfarbschlüsselung, um Videooberflächen mit Overlays zu mischen. Es durchleuchtet die Farbtaste und das sekundäre Video an die primäre Oberfläche und sendet das primäre Video an die Überlagerungsoberfläche. Die Grafiken Karte dann die beiden Oberflächen zu ihrem Framepuffer zusammenzufügen.

Um zu testen, ob der Grafiktreiber Hardwareüberlagerung unterstützt, rufen Sie IDirectDraw7::GetCaps auf. Wenn das Feld dwMaxVisibleOverlays in der DDCAPS-Struktur größer als 0 ist, unterstützt der Treiber Hardwareüberlagerung.

Anwendungen können einige Verhaltensweisen auf dem Overlay-Mixer über die IMixerPinConfig2-Schnittstelle steuern. Spieleentwickler können den Overlay-Mixer verwenden, um Videos im exklusiven DirectDraw-Modus anzuzeigen, wie weiter unten in diesem Abschnitt beschrieben. Der Video Mixing Renderer Filter 9 (VMR-9) bietet jetzt jedoch eine bessere Unterstützung für Videos in Spielen. Weitere Informationen finden Sie unter Verwenden des Videomischrenderers.

Die folgenden Informationen werden für Filterentwickler und Spieleentwickler bereitgestellt, die den Overlay-Mixer im exklusiven DirectDraw-Modus verwenden möchten.

Überlagerungsmischer Interne Vorgänge

Der Overlay-Mixer macht einen Eingabenadel für jeden eingehenden Stream verfügbar. In der Regel gibt es drei Eingabestifte: Pin 0 für Videodaten und Pins 1 und 2 für Zeile 21 und DVD-Subpicture-Daten. Intern erstellt der Overlay-Mixer ein DirectDraw-Objekt mit einer primären Oberfläche, die den gesamten Desktop umfasst, sowie eine Überlagerungsfläche, deren Rechteck durch die Größe des Videostreams auf Pin 0 definiert ist. Wenn der Decoder keine Farbtaste angibt, verwendet der Überlagerungsmixer standardfarbene Tasten: dunkelgrau für neuere Grafikkarten und Magenta für ältere 256-Farbkarten.

Hinweis

Die Ergebnisse sind nicht definiert, wenn der Decoder zwei sekundäre Videostreams gleichzeitig an derselben Stelle auf der Überlagerungsoberfläche übermittelt. (Dies tritt manchmal bei DVDs auf, die Unterpicture- und Zeile 21-Streams enthalten.) Das Video flackert möglicherweise oder zeigt nur einen der Streams an.

 

Unter Windows Vista oder höher deaktiviert der Overlay-Mixer die DwM-Komposition (Desktop Window Manager), wenn der Anzeigetreiber Hardwareüberlagerungen unterstützt. Anwendungen sollten vermeiden, den Overlay-Mixer-Filter zu verwenden. Verwenden Sie stattdessen VMR-9 oder den erweiterten Videorenderer (EvR).

Upstreamverbindung mit dem Videodecoder

In der Regel werden die Eingabestifte des Overlay-Mixers mit einem Upstream Videodecoder verbunden. Der primäre Videostream muss eine Verbindung mit dem Pin 0 herstellen. Die Datenströme der Zeile 21 oder der Unterpicture stellen eine Verbindung mit Pin 1 oder höher her. Wenn es sich bei dem Decoder um einen Softwaredecoder handelt, der ausschließlich die Host-CPU verwendet, ist die Verbindung zwischen dem Decoder und dem Pin 0 eine IMemInputPin-Verbindung . Wenn der Decoder die Hardwarebeschleunigung verwendet, muss die Verbindung mit Pin 0 den IAMVideoAccelerator-Rückschluss verwenden. Diese beiden Arten von Verbindungen schließen sich gegenseitig aus.

Wenn der Decoder direkt auf die Überlagerungsoberfläche zeichnet, sollte er die IOverlay-Schnittstelle auf Pin 0 verwenden und die IOverlayNotify-Schnittstelle implementieren.

Filter, die einen Hardwaredecoder umschließen und über einen Videoport eine Verbindung mit dem Overlay Mixer herstellen, müssen die IVPConfig-Schnittstelle implementieren. Der Overlay-Mixer implementiert die IVPNotify-Schnittstelle . Diese beiden Schnittstellen ermöglichen es dem Decoder, die benötigten Überlagerungsflächen anzugeben, und sie ermöglichen es dem Überlagerungsmischer, den Decoder über die Position dieser Oberflächen im Videospeicher zu informieren.

Der Überlagerungsmischer stellt außerdem sicher, dass das Videorechteck ordnungsgemäß skaliert wird. Die Videoaufzeichnung umfasst bestimmte Probleme in Bezug auf die Skalierung des Vorschaubilds und die Erfassung von verschachtelten Videoframes. Wenn Sie einen Filter- oder WDM-Treiber für ein Hardware-Videoaufzeichnungsgerät entwickeln, finden Sie weitere Informationen zu diesen Themen auf den Referenzseiten IVPConfig und IVPNotify .

Der Overlay-Mixer wird in 1394- oder USB-Aufnahmeszenarien nicht verwendet. Es wird in der Videoaufzeichnung über den PCI-Bus verwendet.

Nachgeschaltete Verbindung mit dem Videorenderer

Der Overlay-Mixer verfügt über einen Ausgabestift, der mit dem Videorenderer-Filter verbunden ist. Der Videorenderer rendert in diesem Fall das Video nicht. Es verwaltet einfach das Videofenster.

Die Pinverbindung verwendet die IOverlay-Schnittstelle und nicht die IMemInputPin-Schnittstelle . Der Videorenderer übergibt seinen Fensterhandle über den Überlagerungsmischer an DirectDraw, der das Ausschneiden des Rechtecks verwaltet. Anwendungen können den Video-Renderer über die Schnittstellen IVideoWindow und IBasicVideo2 im Filter Graph Manager steuern.

Exklusiver DirectDraw-Modus

Mit dem exklusiven DirectDraw-Modus des Overlay-Mixers können Spiele Videos auf einem Teil des Bildschirms anzeigen. In diesem Modus rendert der Überlagerungsmixer das Video direkt auf einer DirectDraw-Oberfläche, die von der Spieleanwendung erstellt wurde, und nicht in einem fenster, das vom Video renderer bereitgestellt wird. Dadurch können Spiele die Farbtaste steuern. Der Überlagerungsmixer macht nur einen Eingabestift im exklusiven DirectDraw-Modus verfügbar, was bedeutet, dass in diesem Modus keine Mischung von Line 21 oder DVD-Unterpictur ausgeführt werden kann.

Um den Überlagerungsmixer im exklusiven DirectDraw-Modus zu verwenden, erstellen Sie eine instance des Überlagerungsmixers, und fragen Sie ihn nach der IDDrawExclModeVideo-Schnittstelle ab, bevor Sie das Filterdiagramm erstellen. Rufen Sie dann IDDrawExclModeVideo::SetDDrawSurface auf, um die DirectDraw-Oberfläche für das Rendern anzugeben. Eine wichtige Einschränkung dieses Modus besteht darin, dass das Spiel keinen Zugriff auf die tatsächlichen Videobits erhält. Wenn Sie IDDrawExclModeVideo verwenden, erstellt Ihre Anwendung die primäre Oberfläche, und der Überlagerungsmixer erstellt die Überlagerungsoberfläche.

Sie können auch den exklusiven DirectDraw-Modus verwenden, um fensterloses Rendering durchzuführen, z. B. auf einer Webseite. Dies wird jedoch nicht empfohlen, da der Überlagerungsmixer in diesem Modus keine Mischung ausführt. Dies bedeutet, dass keine Zeile 21- oder Unterpicture-Daten angezeigt werden können.

DirectShow-Filter