Förbättrad videoåtergivning
[Komponenten som beskrivs på den här sidan, Enhanced Video Renderer, är en äldre funktion. Det har ersatts av Simple Video Renderer (SVR) exponeras via MediaPlayer och IMFMediaEngine komponenter. Om du vill spela upp videoinnehåll bör du skicka data till någon av dessa komponenter och låta dem instansiera den nya videoåtergivningen. Dessa komponenter har optimerats för Windows 10 och Windows 11. Microsoft rekommenderar starkt att ny kod använder MediaPlayer eller den lägre nivån IMFMediaEngine API:er för att spela upp videomedier i Windows i stället för EVR när det är möjligt. Microsoft föreslår att befintlig kod som använder äldre API:er skrivs om för att använda de nya API:erna om möjligt.]
Den förbättrade videoåtergivningen (EVR) är en komponent som visar video på användarens bildskärm. Det finns två versioner av EVR:
- EVR-mediamottagaren för Media Foundation-program.
- EVR-filtret för DirectShow-program.
Båda versionerna använder samma interna objekt för att återge video, och de delar många av samma gränssnitt.
EVR kan blanda upp till 16 videoströmmar. Den första indataströmmen kallas referensström. Referensströmmen visas alltid först i z-ordningen. Eventuella ytterligare strömmar kallas underströmmaroch blandas ovanpå referensströmmen. Programmet kan ändra z-ordningen för underströmmen, men ingen underström kan vara först i z-ordningen.
Grafikdrivrutinen avgör vilka videoformat som stöds, men vanligtvis är de begränsade till följande:
- Referensström: Progressiv eller sammanflätad YUV utan alfa per pixel (till exempel NV12 eller YUY2); eller progressiv RGB.
- Underströmmar: Progressiv YUV med per pixel-alfa, till exempel AYUV eller AI44.
Vilka underströmsformat som är tillgängliga kan bero på referensströmmens format. Mer information finns i EVR Media Type Negotiation.
Internt använder EVR ett objekt som kallas mixer för att sammansatta ramarna från indataströmmarna till en yta för återgivning. Mixern utför också deinterlacing och färgkorrigering. Utdata från mixern är den slutliga sammansatta videoramen. Ett andra objekt som kallas -presentatören återger videoramen till skärmen. Presentatören schemalägger när ramarna återges och hanterar Direct3D-enheten. Ett program kan tillhandahålla en anpassad implementering av mixern eller presentatören.
Utdataramhastigheten är låst till referensströmmen. När underströmmen tar emot nya ramar håller mixern fast på dem. När referensströmmen tar emot en ny ram, kompositerar mixern den ramen med underströmsramarna. (Om referensströmmen är sammanflätad kan en fullständig referensram kräva mer än ett medieexempel.) Det är möjligt för en underström att ta emot mer än en bildruta medan mixern väntar på en referensram. I så fall tar mixern helt enkelt bort den tidigare underströmsramen.
Eftersom presentatören skapar Direct3D-enheten ansvarar den också för att dela enheten med andra pipelineobjekt som behöver åtkomst till DirectX Video Acceleration-tjänster (DXVA). I synnerhet använder EVR-mixern DXVA-videobearbetningstjänster för att deinterlace och blanda videon. Utanför EVR kan programvarudekodare använda DXVA för accelererad videodekodning. Presentatören delar Direct3D-enheten med hjälp av Direct3D Device Manager. Följande diagram visar den interna arkitekturen för EVR. (Programvarudekodaren, skuggad i grått, är inte en del av EVR.)
EVR-gränssnitt
EVR stöder följande gränssnitt. Vissa av dessa gränssnitt implementeras av mixern eller presentatören. För varje gränssnitt beskriver referensavsnittet hur du hämtar en pekare till gränssnittet.
Gränssnitt | Beskrivning |
---|---|
IEVRFilterConfig | Anger antalet indatastift i EVR-filtret (endast DirectShow). |
IEVRFilterConfigEx | Konfigurerar EVR-filtret (endast DirectShow). |
IEVRTrustedVideoPlugin | Aktiverar ett EVR-plugin-program för att återge skyddad video. |
IMFDesiredSample | Gör att EVR-presentatören kan begära en specifik ram från mixern. |
IMFQualityAdvise | Gör det möjligt för kvalitetshanteraren att justera EVR-videokvaliteten. |
IMFTopologyServiceLookup | Gör att en anpassad mixer eller presentatör kan hämta gränssnittspekare från EVR. |
IMFVideoDeviceID | Returnerar enhetsidentifieraren för en EVR-mixer eller presentatör. |
IMFVideoDisplayControl | Styr hur EVR visar video. |
IMFVideoMixerBitmap | Alpha-blandar en statisk bitmappsbild med videon. |
IMFVideoMixerControl | Styr hur EVR (Enhanced Video Renderer) blandar videounderströmmar. |
IMFVideoMixerControl2 | Styr inställningar för videointerlacing. |
IMFVideoPositionMapper | Mappar en position på en indatavideoström till motsvarande position på en utdatavideoström. |
IMFVideoPresenter | Exponerad av EVR-presentatören. |
IMFVideoProcessor | Styr videobearbetning, inklusive justering, brusfilter och detaljfilter. |
IMFVideoRenderer | Ställer in en mixer eller presentatör på EVR. |
IMFVideoSampleAllocator | Allokerar videoexempel. |
I det här avsnittet
Ämne | Beskrivning |
---|---|
Använda DirectShow EVR-filtret | Så här använder du EVR i ett DirectShow-program. |
Använda EVR Media Sink | Så här använder du EVR i ett Media Foundation-program. |
Använda videovisningskontrollerna | Så här styr du hur EVR visar video i programfönstret. |
Använda videoblandarens kontroller | Hur man styr hur EVR-mixern fungerar. |
EVR Media Type Negotiation | Beskriver hur EVR avgör vilka videoformat som kan accepteras som indata. |
Anpassade mixers | Så här skriver du en anpassad mixer för EVR. |
Så här skriver du en EVR-presentatör | Så här skriver du en anpassad presentatör för EVR. |
Relaterade ämnen