Freigeben über


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.)

architectural diagram showing the 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.

 

Audio-/Videowiedergabe