Überlagerungsmischer Filter
[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.]
Der Overlay-Mixer-Filter ist ein Videorenderer, der speziell für die DVD-Wiedergabe und Übertragung von Videostreams mit Zeilen-21-Untertiteln entwickelt wurde. Der Overlay-Mixer unterstützt auch Videoporterweiterungen (VPEs), die es ermöglichen, mit Hardware MPEG-2-Decodern oder analogen TV-Tunern zu arbeiten, die Video direkt an die Grafikkarte senden, anstatt über den PCI-Bus.
Anmerkung
Der Video mixing Renderer 9 wird jetzt gegenüber dem Overlay-Mixer-Filter bevorzugt, außer in VPE-Szenarien.
Der Überlagerungsmischer verwendet DirectDraw zum Rendern. Sie erfordert eine Überlagerungsoberfläche auf der Grafikkarte. Der primäre Videostream sollte mit pin 0 verbunden sein. Sekundäre Datenströme (Untertitelgrafiken oder DVD-Unterpictures) sind mit Pins 1 und höher verbunden. Der Überlagerungsmischer bläht die sekundären Datenströme direkt auf die primäre Suface; sie mischen oder alphanieren sie nicht.
Der Überlagerungsmischer verwendet den Videorenderer für die Fensterverwaltung. Der Videorenderer stellt eine Verbindung mit dem Ausgabe-Pin des Overlay-Mixers bereit.
Dieser Filter wird dem Filterdiagramm automatisch hinzugefügt, wenn Anwendungen die IDvdGraphBuilder- und ICaptureGraphBuilder2 Schnittstellen zum Erstellen des Diagramms verwenden. Der Filter Graph-Manager fügt dem Diagramm nicht automatisch den Überlagerungsmischer hinzu.
Anmerkung
In der folgenden Tabelle sind die medienuntertypen, die für eingabenadel 0 akzeptiert werden, hardwareabhängig. Der Überlagerungsmischer kann nicht ermitteln, ob ein bestimmter Untertyp unterstützt wird, bis er die DirectDraw-Oberfläche erstellt. Daher besteht die einzige Möglichkeit für einen Upstreamfilter, um zu ermitteln, ob ein Untertyp unterstützt wird, um eine Verbindung mit diesem Untertyp zu versuchen.
Etikett | Wert |
---|---|
Filterschnittstellen | IAMOverlayFX, IAMVideoDecimationProperties, IBaseFilter, IDDrawExclModeVideo, IKsPropertySet, IMediaPosition, IMediaSeeking, IMixerOCX, IQualProp, IVPNotify, IVPNotify2 |
Eingabe-Pin-Medientypen | Haupttyp: MEDIATYPE_Video Subtypen:
|
Eingabe-Pin-Schnittstellen | IAMVideoAccelerator, IKsPin, IKsPropertySet, IMemInputPin, IMixerPinConfig, IMixerPinConfig2, IOverlay (nur pin 0), IPin, IPinConnection, IQualityControl, IVPNotify, IVPNotify2 |
Ausgabe-Pin-Medientypen | MEDIATYPE_Video, MEDIASUBTYPE_Overlay |
Ausgabeheftschnittstellen | IMediaPosition, IMediaSeeking, IPin, IQualityControl |
Filter CLSID | CLSID_OverlayMixer |
Eigenschaftenseite CLSID | Keine Eigenschaftenseite. |
Ausführbar | qdvd.dll |
Merit | MERIT_DO_NOT_USE |
Filterkategorie | CLSID_LegacyAmFilterCategory |
Bemerkungen
Der Überlagerungsmischer verwendet zielfarbene Tastenkombinationen, um Videooberflächen mit Überlagerungen zu mischen. Es blits die Farbtaste und das sekundäre Video an die primäre Oberfläche und sendet das primäre Video an die Überlagerungsoberfläche. Die Grafikkarte zusammengesetzt dann die beiden Oberflächen in den Framepuffer.
Rufen Sie IDirectDraw7::GetCapsauf, um zu testen, ob der Grafiktreiber Hardwareüberlagerung unterstützt. Wenn die dwMaxVisibleOverlays Feld 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 Video im Exklusiven DirectDraw-Modus anzuzeigen, wie weiter unten in diesem Abschnitt beschrieben. Der Video mixing Renderer Filter 9 (VMR-9) bietet jedoch eine bessere Unterstützung für Videos in Spielen. Weitere Informationen finden Sie unter Verwenden des Videomixer-Renderers.
Die folgenden Informationen werden für Filterentwickler und Spieleentwickler bereitgestellt, die den Overlay-Mixer im DirectDraw Exklusivmodus verwenden möchten.
internen Überlagerungsmischer
Der Überlagerungsmischer macht für jeden eingehenden Datenstrom eine Eingabenadel verfügbar. In der Regel gibt es drei Eingabe-Pins: 0 für Videodaten und Pins 1 und 2 für Zeilen-21- und DVD-Unterpubpicturedaten. Intern erstellt der Overlay-Mixer ein DirectDraw-Objekt mit einer primären Oberfläche, die den gesamten Desktop umfasst, sowie eine Überlagerungsoberfläche, deren Rechteck durch die Größe des Videostreams auf Pin 0 definiert wird. Wenn der Decoder keinen Farbschlüssel angibt, verwendet der Overlay-Mixer Standardfarbtasten: dunkelgrau für neuere Grafikkarten und Magenta für ältere 256-Farbkarten.
Anmerkung
Die Ergebnisse sind nicht definiert, wenn der Decoder zwei sekundäre Videostreams gleichzeitig an derselben Stelle auf der Overlayoberfläche liefert. (Dies tritt manchmal mit DVDs auf, die Unterpicture- und Zeilen-21-Datenströme enthalten.) Das Video flackert möglicherweise oder zeigt nur einen der Datenströme an.
Unter Windows Vista oder höher deaktiviert der Überlagerungs-Mixer die Komposition des Desktop window Manager (DWM), wenn der Anzeigetreiber Hardwareüberlagerung unterstützt. Anwendungen sollten die Verwendung des Overlay-Mixerfilters vermeiden; verwenden Sie stattdessen vmR-9 oder den Enhanced Video Renderer (EVR).
Upstreamverbindung mit dem Videodecoder
In der Regel verbinden die Eingabe-Pins des Overlay-Mixers mit einem upstream-Videodecoder. Der primäre Videostream muss eine Verbindung mit dem Pin 0 herstellen. Die Linien 21- oder Unterdatenströme verbinden sich mit pin 1 oder höher. Wenn es sich bei dem Decoder um einen Softwaredecoder handelt, der die Host-CPU ausschließlich verwendet, ist die Verbindung zwischen dem Decoder und dem Pin 0 ein IMemInputPin Verbindung. Wenn der Decoder Hardwarebeschleunigung verwendet, muss die Verbindung mit Pin 0 die IAMVideoAccelerator Inferface 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 an 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 Overlay-Mixer, den Decoder über die Position dieser Oberflächen im Videospeicher zu informieren.
Der Overlay-Mixer stellt außerdem sicher, dass das Videorechteck korrekt skaliert wird. Die Videoaufnahme umfasst bestimmte Probleme im Hinblick auf die Skalierung des Vorschaubilds und das Aufnehmen von interleavierten Videoframes. Wenn Sie einen Filter oder WDM-Treiber für ein Hardwarevideoaufnahmegerät entwickeln, lesen Sie die IVPConfig- und IVPNotify Referenzseiten, um weitere Informationen zu diesen Themen zu erhalten.
Der Overlay-Mixer wird in 1394- oder USB-Aufnahmeszenarien nicht verwendet. Es wird in der Videoaufnahme über den PCI-Bus verwendet.
Nachgeschaltete Verbindung mit dem Videorenderer
Der Overlay-Mixer verfügt über einen Ausgabestift, der eine Verbindung mit dem Videorenderer Filter herstellt. Der Videorenderer in diesem Fall rendert das Video nicht; es verwaltet einfach das Videofenster.
Die Pinverbindung verwendet die IOverlay Schnittstelle anstelle der IMemInputPin Schnittstelle. Der Videorenderer übergibt seinen Fensterziehpunkt über den Overlay-Mixer an DirectDraw, der den Rechteckausschnitt verwaltet. Anwendungen können den Videorenderer über die IVideoWindow- und IBasicVideo2- schnittstellen im Filter Graph Manager steuern.
DirectDraw Exclusive Mode
Der DirectDraw-Exklusive Modus von Overlay Mixer ermöglicht es Spielen, Video auf einem teil des Bildschirms anzuzeigen. In diesem Modus rendert der Overlay-Mixer das Video direkt auf einer directDraw-Oberfläche, die von der Spieleanwendung erstellt wurde, anstatt auf ein vom Videorenderer bereitgestelltes Fenster. Dadurch können Spiele die Farbtaste steuern. Der Overlay-Mixer macht nur einen Eingabestift im Exklusiven DirectDraw-Modus verfügbar, was bedeutet, dass in diesem Modus keine Mischung aus Line 21 oder DVD-Unterpictur ausgeführt werden kann.
Um den Overlay-Mixer im Exklusiven DirectDraw-Modus zu verwenden, erstellen Sie eine Instanz des Overlay-Mixers, 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 erhebliche Einschränkung dieses Modus besteht darin, dass das Spiel keinen Zugriff auf die tatsächlichen Videobits erhält. Wenn Sie IDDrawExclModeVideoverwenden, erstellt Ihre Anwendung die primäre Oberfläche, und der Overlay-Mixer erstellt die Überlagerungsoberfläche.
Sie können auch den Exklusiven DirectDraw-Modus verwenden, um fensterloses Rendern auszuführen, z. B. auf einer Webseite, dies wird jedoch nicht empfohlen, da der Overlay-Mixer keine Mischvorgänge in diesem Modus durchführt. Dies bedeutet, dass keine Zeilen-21- oder Unterpicture-Daten angezeigt werden können.
Verwandte Themen