Verbesserter Videorenderer
Die auf dieser Seite beschriebene Komponente, Erweiterter Videorenderer, ist ein Legacyfeature. Sie wurde durch den Simple Video Renderer (SVR) abgelöst, der über die Komponenten MediaPlayer und IMFMediaEngine verfügbar gemacht wurde. 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-APIs oder die IMFMediaEngine-APIs auf niedrigerer Ebene verwendet, um Videomedien in Windows anstelle des EVR wiederzugeben. Microsoft schlägt vor, dass vorhandener Code, der die Legacy-APIs verwendet, wenn möglich umgeschrieben wird, um die neuen APIs zu verwenden.]
Der erweiterte Videorenderer (EVR) ist eine Komponente, die Video auf dem Monitor des Benutzers anzeigt. Es gibt zwei Versionen des EVR:
- Die EVR-Mediensenke 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 Referenzdatenstrom bezeichnet. Der Referenzdatenstrom wird immer zuerst in der Z-Reihenfolge angezeigt. Alle zusätzlichen Datenströme werden als Unterstreams bezeichnet und werden über den Referenzdatenstrom gemischt. Die Anwendung kann die Z-Reihenfolge der Unterstreams ändern, aber kein Unterstream kann in der Z-Reihenfolge an erster Stelle sein.
Der Grafiktreiber bestimmt, welche Videoformate unterstützt werden. Sie sind jedoch in der Regel auf Folgende beschränkt:
- Referenzdatenstrom: Progressive oder Interlaced YUV ohne Alpha pro Pixel (wie z. B. NV12 oder YUY2), oder progressive RGB.
- Substreams: Progressive YUV mit alpha pro Pixel, wie 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 Eingabeströmen auf einer Oberfläche zum Rendern zusammenzusetzen. Der Mixer führt auch Deinterlacing und Farbkorrektur durch. Die Ausgabe des Mixers ist der endgültige zusammengesetzte Videoframe. Ein zweites Objekt, das als Referent bezeichnet wird, rendert den Videoframe auf dem Bildschirm. 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 fest. Wenn der Referenzdatenstrom einen neuen Frame empfängt, setzt der Mixer diesen Frame mit den Unterstreamframes zusammen. (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 deinterlacen und zu mischen. Außerhalb des EVR können Softwaredecoder DXVA für beschleunigte Videodecodierung verwenden. Der Referent teilt das Direct3D-Gerät über den Direct3D-Geräte-Manager. Das folgende Diagramm zeigt die interne Architektur des EVR. (Der in grau schattierte Softwaredecoder 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 es 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 der EVR Video anzeigt. |
IMFVideoMixerBitmap | Alpha blendet ein statisches Bitmapbild in das Video ein. |
IMFVideoMixerControl | Steuert, wie der erweiterte Videorenderer (Enhanced Video Renderer, EVR) Videounterstreams kombiniert. |
IMFVideoMixerControl2 | Steuert die Einstellungen für das Video-Deinterlacing. |
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 | Wie Sie den EVR in einer DirectShow-Anwendung verwenden. |
Verwenden der EVR-Mediensenke | Wie Sie den EVR in einer Media Foundation-Anwendung verwenden. |
Verwenden der Videoanzeigesteuerelemente | Wie Sie die Art und Weise steuern, in welcher der EVR das Video im Anwendungsfenster anzeigt. |
Verwenden der Videomixersteuerelemente | Wie Sie die Art und Weise steuern, wie der EVR-Mixer 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 Sie eines EVR-Referenten | So schreiben Sie einen benutzerdefinierten Referenten für das EVR. |
Zugehörige Themen