Verbeterde videoweergave
[Het onderdeel dat op deze pagina wordt beschreven, Enhanced Video Renderer, is een verouderde functie. Het is vervangen door de Simple Video Renderer (SVR) die wordt weergegeven via de MediaPlayer en IMFMediaEngine onderdelen. Als u video-inhoud wilt afspelen, moet u gegevens verzenden naar een van deze onderdelen en deze toestaan om de nieuwe video-renderer te instantiëren. Deze onderdelen zijn geoptimaliseerd voor Windows 10 en Windows 11. Microsoft raadt ten zeerste aan dat nieuwe code MediaPlayer of het lagere niveau IMFMediaEngine API's gebruikt om videomedia af te spelen in Windows in plaats van de EVR, indien mogelijk. Microsoft stelt voor dat bestaande code die gebruikmaakt van de verouderde API's, indien mogelijk opnieuw worden geschreven om de nieuwe API's te gebruiken.]
De verbeterde videoweergave (EVR) is een onderdeel dat video op de monitor van de gebruiker weergeeft. Er bestaan twee versies van de EVR:
- De EVR-media-sink voor Media Foundation-toepassingen.
- Het EVR-filter voor DirectShow-toepassingen.
Beide versies gebruiken dezelfde interne objecten om video weer te geven en ze delen veel van dezelfde interfaces.
De EVR kan maximaal 16 videostreams combineren. De eerste invoerstroom wordt de referentiestroomgenoemd. De referentiestroom wordt altijd eerst weergegeven in de z-volgorde. Eventuele extra streams worden substromengenoemd en worden op de referentiestroom gemengd. De toepassing kan de z-volgorde van de substromen wijzigen, maar er kan geen substream eerst in de z-volgorde zijn.
Het grafische stuurprogramma bepaalt welke video-indelingen worden ondersteund, maar meestal zijn ze beperkt tot het volgende:
- Referentiestroom: Progressieve of interlaced YUV zonder alfa per pixel (zoals NV12 of YUY2); of progressieve RGB.
- Substromen: Progressieve YUV met per pixel alfa, zoals AYUV of AI44.
De beschikbare substreamindelingen kunnen afhankelijk zijn van de indeling van de referentiestroom. Zie EVR Media Type Negotiationvoor meer informatie.
Intern gebruikt de EVR een object met de naam mixer om de frames van de invoerstromen op één oppervlak samen te maken voor rendering. De mixer voert ook deinterlacing en kleurcorrectie uit. De uitvoer van de mixer is het uiteindelijke samengestelde videoframe. Een tweede object met de naam presentator het videoframe weergeeft op de weergave. De presentator plant wanneer de frames worden weergegeven en beheert het Direct3D-apparaat. Een toepassing kan een aangepaste implementatie van de mixer of de presentator bieden.
De uitvoerframesnelheid is vergrendeld voor de referentiestroom. Wanneer de substromen nieuwe frames ontvangen, houdt de mixer erop vast. Wanneer de referentiestroom een nieuw frame ontvangt, wordt dat frame samengesteld met de substreamframes. (Als de referentiestroom is interlaced, kan een volledig referentieframe meer dan één mediavoorbeeld vereisen.) Het is mogelijk dat een substream meer dan één frame ontvangt terwijl de mixer wacht op een referentieframe. In dat geval negeert de mixer gewoon het vorige substreamframe.
Omdat de presentator het Direct3D-apparaat maakt, is het ook verantwoordelijk voor het delen van het apparaat met andere pijplijnobjecten die toegang nodig hebben tot DirectX Video Acceleration-services (DXVA). De EVR-mixer gebruikt met name de DXVA-videoverwerkingsservices om de video te deinterlaceren en te mixen. Buiten de EVR kunnen softwaredecoders DXVA gebruiken voor versnelde videocodering. De presentator deelt het Direct3D-apparaat via de Direct3D Device Manager. In het volgende diagram ziet u de interne architectuur van de EVR. (De software-decoder, grijs gearceerd, maakt geen deel uit van de EVR.)
EVR-interfaces
De EVR ondersteunt de volgende interfaces. Sommige van deze interfaces worden geïmplementeerd door de mixer of presentator. Voor elke interface wordt in het naslagonderwerp beschreven hoe u een aanwijzer naar de interface krijgt.
Interface | Beschrijving |
---|---|
IEVRFilterConfig- | Hiermee stelt u het aantal invoerpinnen in op het EVR-filter (alleen DirectShow). |
IEVRFilterConfigEx- | Hiermee configureert u het EVR-filter (alleen DirectShow). |
IEVRTrustedVideoPlugin | Hiermee kan een EVR-invoegtoepassing beveiligde video weergeven. |
IMFDesiredSample- | Hiermee kan de EVR-presentator een specifiek frame aanvragen bij de mixer. |
IMFQualityAdvise- | Stelt de kwaliteitsmanager in staat om de EVR-videokwaliteit aan te passen. |
IMFTopologyServiceLookup- | Hiermee kan een aangepaste mixer of presentator interfacepointers ophalen uit de EVR. |
IMFVideoDeviceID | Retourneert de apparaat-id van een EVR-mixer of presentator. |
IMFVideoDisplayControl | Hiermee bepaalt u hoe de EVR video weergeeft. |
IMFVideoMixerBitmap | Alfa combineert een statische bitmapafbeelding met de video. |
IMFVideoMixerControl | Hiermee bepaalt u hoe de Enhanced Video Renderer (EVR) videosubstreams combineert. |
IMFVideoMixerControl2 | Hiermee bepaalt u voorkeuren voor videodeinterlacing. |
IMFVideoPositionMapper | Hiermee wordt een positie op een invoervideostream toegewezen aan de bijbehorende positie in een uitvoervideostream. |
IMFVideoPresenter- | Beschikbaar gesteld door de EVR-presentator. |
IMFVideoProcessor | Bepaalt videoverwerking, inclusief aanpassing, ruisfilters en detailfilters. |
IMFVideoRenderer- | Stelt een mixer of presentator in op de EVR. |
IMFVideoSampleAllocator | Wijst videovoorbeelden toe. |
In deze sectie
Onderwerp | Beschrijving |
---|---|
Het DirectShow EVR-filter gebruiken | De EVR gebruiken in een DirectShow-toepassing. |
Met behulp van de EVR Media Sink- | De EVR gebruiken in een Media Foundation-toepassing. |
De besturingselementen voor videoweergave gebruiken | Hoe u de manier bepaalt waarop de EVR video weergeeft in het toepassingsvenster. |
De videomixers gebruiken | Hoe kan ik bepalen hoe de EVR-mixer werkt. |
EVR-mediatype onderhandelen | Beschrijft hoe de EVR bepaalt welke video-indelingen het als invoer kan accepteren. |
aangepaste mixers | Een aangepaste mixer schrijven voor de EVR. |
Een EVR-presentator schrijven | Een aangepaste presentator schrijven voor de EVR. |
Verwante onderwerpen