Verbesserter Videorenderer
[Die auf dieser Seite beschriebene Komponente, enhanced Video Renderer, ist ein Legacyfeature. Es wurde durch den simple Video Renderer (SVR) ersetzt, der über die MediaPlayer- und IMFMediaEngine-komponenten verfügbar gemacht wird. Um Videoinhalte wiederzugeben, sollten Sie Daten an eine dieser Komponenten senden und es ihnen ermöglichen, den neuen Videorenderer zu instanziieren. Diese Komponenten wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code MediaPlayer- oder die untere Ebene IMFMediaEngine-APIs zum Wiedergeben von Videomedien in Windows anstelle des EVR verwendet. Microsoft schlägt vor, dass vorhandener Code, der die Legacy-APIs verwendet, um die neuen APIs zu verwenden, falls möglich umgeschrieben werden.]
Der erweiterte Videorenderer (EVR) ist eine Komponente, die Video auf dem Monitor des Benutzers anzeigt. Es gibt zwei Versionen des EVR:
- Die EVR-Medienspüle für Media Foundation-Anwendungen.
- Der EVR-Filter für DirectShow-Anwendungen.
Beide Versionen verwenden dieselben internen Objekte, um Video zu rendern, und sie verwenden viele der gleichen Schnittstellen.
Der EVR kann bis zu 16 Videostreams kombinieren. Der erste Eingabedatenstrom wird als Referenzdatenstrombezeichnet. Der Referenzdatenstrom wird immer zuerst in der Z-Reihenfolge angezeigt. Alle zusätzlichen Datenströme werden Unterstreamsaufgerufen und werden über dem Referenzdatenstrom gemischt. Die Anwendung kann die Z-Reihenfolge der Unterstreams ändern, aber kein Unterstream kann zuerst in der Z-Reihenfolge erfolgen.
Der Grafiktreiber bestimmt, welche Videoformate unterstützt werden, sind jedoch in der Regel auf Folgendes beschränkt:
- Referenzdatenstrom: Progressive oder interlaced YUV ohne Alpha pro Pixel (z. B. NV12 oder YUY2); oder progressive RGB.
- Substreams: Progressive YUV mit alpha pro Pixel, z. B. AYUV oder AI44.
Die verfügbaren Unterstreamformate hängen möglicherweise vom Format des Referenzdatenstroms ab. Weitere Informationen finden Sie unter EVR Media Type Negotiation.
Intern verwendet das EVR ein Objekt, das als Mixer bezeichnet wird,, um die Frames aus den Eingabedatenströmen auf einer Oberfläche zum Rendern zu zusammengesetzt. Der Mixer führt auch Deinterlacing und Farbkorrektur durch. Die Ausgabe des Mixers ist der endgültige zusammengesetzte Videoframe. Ein zweites Objekt, das als Presenter bezeichnet wird, den Videoframe auf dem Bildschirm rendert. Der Referent plant, wann die Frames gerendert und das Direct3D-Gerät verwaltet werden. Eine Anwendung kann eine benutzerdefinierte Implementierung des Mixers oder des Referenten bereitstellen.
Die Ausgabeframerate ist für den Referenzdatenstrom gesperrt. Wenn die Unterstreams neue Frames erhalten, hält der Mixer sie gedrückt. Wenn der Referenzdatenstrom einen neuen Frame empfängt, werden die Mischer, die diesen Frame mit den Unterstreamframes enthalten, zusammengesetzt. (Wenn der Referenzdatenstrom interlaced ist, kann ein vollständiger Referenzframe mehrere Medienbeispiele erfordern.) Es ist möglich, dass ein Unterstream mehr als einen Frame empfängt, während der Mixer auf einen Referenzframe wartet. In diesem Fall verwirft der Mixer einfach den vorherigen Teilstreamframe.
Da der Referent das Direct3D-Gerät erstellt, ist er auch für die Freigabe des Geräts mit anderen Pipelineobjekten verantwortlich, die auf DirectX Video Acceleration (DXVA)-Dienste zugreifen müssen. Insbesondere verwendet der EVR-Mixer die DXVA-Videoverarbeitungsdienste, um das Video zu entinterlacen und zu mischen. Außerhalb des EVR können Softwaredecoder DXVA für beschleunigte Videodecodierung verwenden. Der Referent teilt das Direct3D-Gerät mithilfe des Direct3D-Geräte-Managers. Das folgende Diagramm zeigt die interne Architektur des EVR. (Der Softwaredecoder, in Grau schattiert, ist nicht Teil des EVR.)
EVR-Schnittstellen
Der EVR unterstützt die folgenden Schnittstellen. Einige dieser Schnittstellen werden vom Mixer oder Referenten implementiert. Für jede Schnittstelle beschreibt das Referenzthema, wie ein Zeiger auf die Schnittstelle abgerufen wird.
Schnittstelle | Beschreibung |
---|---|
IEVRFilterConfig- | Legt die Anzahl der Eingabe-Pins für den EVR-Filter fest (nur DirectShow). |
IEVRFilterConfigEx- | Konfiguriert den EVR-Filter (nur DirectShow). |
IEVRTrustedVideoPlugin | Ermöglicht es einem EVR-Plug-In, geschützte Videos zu rendern. |
IMFDesiredSample- | Ermöglicht es dem EVR-Referenten, einen bestimmten Frame vom Mixer anzufordern. |
IMFQualityAdvise | Ermöglicht dem Qualitätsmanager, die EVR-Videoqualität anzupassen. |
IMFTopologyServiceLookup- | Ermöglicht einem benutzerdefinierten Mixer oder Referenten das Abrufen von Schnittstellenzeigern aus dem EVR. |
IMFVideoDeviceID- | Gibt den Gerätebezeichner eines EVR-Mixers oder Referenten zurück. |
IMFVideoDisplayControl- | Steuert, wie das EVR Video anzeigt. |
IMFVideoMixerBitmap- | Alpha blendet ein statisches Bitmapbild mit dem Video zusammen. |
IMFVideoMixerControl- | Steuert, wie der erweiterte Videorenderer (ENHANCED Video Renderer, EVR) Videounterstreams kombiniert. |
IMFVideoMixerControl2- | Steuert einstellungen für die Videodeinterlacing. |
IMFVideoPositionMapper | Ordnet eine Position in einem Eingabevideodatenstrom der entsprechenden Position eines Ausgabevideostreams zu. |
IMFVideoPresenter- | Verfügbar gemacht vom EVR-Referenten. |
IMFVideoProcessor- | Steuert die Videoverarbeitung, einschließlich Anpassung, Rauschfilter und Detailfilter. |
IMFVideoRenderer- | Legt einen Mixer oder Referenten auf dem EVR fest. |
IMFVideoSampleAllocator- | Ordnet Videobeispiele zu. |
In diesem Abschnitt
Thema | Beschreibung |
---|---|
Verwenden des DirectShow EVR-Filters | Verwenden des EVR in einer DirectShow-Anwendung |
Verwenden der EVR-Medienspüle | Verwenden des EVR in einer Media Foundation-Anwendung |
Verwenden der Videoanzeigesteuerelemente | So steuern Sie die Art und Weise, in der das EVR Video im Anwendungsfenster anzeigt. |
Verwenden der Videomixersteuerelemente | Wie man die Art und Weise steuert, wie der EVR-Mischer arbeitet. |
EVR-Medientyp-Aushandlung | Beschreibt, wie der EVR bestimmt, welche Videoformate es als Eingabe akzeptieren kann. |
benutzerdefinierte Mixer | So schreiben Sie einen benutzerdefinierten Mixer für den EVR. |
Schreiben eines EVR-Referenten | Schreiben eines benutzerdefinierten Referenten für das EVR |
Verwandte Themen