Renderer video avanzato

[Il componente descritto in questa pagina, Il renderer video avanzato è una funzionalità legacy. È stato sostituito dal Simple Video Renderer (SVR) esposto attraverso i componenti MediaPlayer e IMFMediaEngine . Per riprodurre contenuti video, è necessario inviare dati a uno di questi componenti e consentire loro di creare un'istanza del nuovo renderer video. Questi componenti sono stati ottimizzati per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer o le API IMFMediaEngine di livello inferiore per riprodurre contenuti multimediali video in Windows anziché EVR, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

Il renderer video avanzato (EVR) è un componente che visualizza video sul monitor dell'utente. Esistono due versioni di EVR:

  • Sink multimediale EVR, per le applicazioni Media Foundation.
  • Filtro EVR, per le applicazioni DirectShow.

Entrambe le versioni usano gli stessi oggetti interni per eseguire il rendering del video e condividono molte delle stesse interfacce.

EVR può combinare fino a 16 flussi video. Il primo flusso di input viene chiamato flusso di riferimento. Il flusso di riferimento viene sempre visualizzato per primo nell'ordine z. Tutti i flussi aggiuntivi vengono chiamati substream e vengono mescolati sopra il flusso di riferimento. L'applicazione può modificare l'ordine z dei sottostream, ma non può essere prima nell'ordine z.

Il driver grafico determina quali formati video sono supportati, ma in genere sono limitati ai seguenti:

  • Flusso di riferimento: YUV progressivo o interlacciato senza alfa per pixel (ad esempio NV12 o YUY2); o RGB progressivo.
  • Sottostream: YUV progressivo con alfa per pixel, ad esempio AYUV o AI44.

I formati di substream disponibili possono dipendere dal formato del flusso di riferimento. Per altre informazioni, vedere Negoziazione del tipo di supporto EVR.

Internamente, EVR usa un oggetto denominato mixer per comporre i fotogrammi dai flussi di input in un'unica superficie per il rendering. Il mixer esegue anche la disincantazione e la correzione del colore. L'output del mixer è il fotogramma video composito finale. Un secondo oggetto denominato relatore esegue il rendering del fotogramma video nella visualizzazione. Il relatore pianifica il rendering dei fotogrammi e gestisce il dispositivo Direct3D. Un'applicazione può fornire un'implementazione personalizzata del mixer o del relatore.

La frequenza dei fotogrammi di output è bloccata nel flusso di riferimento. Ogni volta che i sottostream ricevono nuovi fotogrammi, il mixer li mantiene. Quando il flusso di riferimento riceve un nuovo frame, il mixer è composto da tale cornice con i fotogrammi substream. Se il flusso di riferimento è interlacciato, un frame di riferimento completo potrebbe richiedere più di un campione multimediale. È possibile che un sottostream riceva più di un fotogramma mentre il mixer è in attesa di un frame di riferimento. In tal caso, il mixer rimuove semplicemente il frame substream precedente.

Poiché il relatore crea il dispositivo Direct3D, è anche responsabile della condivisione del dispositivo con altri oggetti pipeline che devono accedere ai servizi DirectX Video Acceleration (DXVA). In particolare, il mixer EVR usa i servizi di elaborazione video DXVA per deinterlace e combinare il video. Esternamente a EVR, i decodificatori software possono usare DXVA per la decodifica video accelerata. Il relatore condivide il dispositivo Direct3D tramite il Gestione dispositivi Direct3D. Il diagramma seguente illustra l'architettura interna di EVR. Il decodificatore software, ombreggiato in grigio, non fa parte dell'EVR.

architectural diagram showing the evr.

Interfacce EVR

EVR supporta le interfacce seguenti. Alcune di queste interfacce vengono implementate dal mixer o dal relatore. Per ogni interfaccia, l'argomento di riferimento descrive come ottenere un puntatore all'interfaccia.

Interfaccia Descrizione
IEVRFilterConfig Imposta il numero di pin di input nel filtro EVR (solo DirectShow).
IEVRFilterConfigEx Configura il filtro EVR (solo DirectShow).
IEVRTrustedVideoPlugin Consente a un plug-in EVR di eseguire il rendering di video protetti.
IMFDesiredSample Consente al relatore EVR di richiedere un frame specifico dal mixer.
IMFQualityAdvise Consente al gestore qualità di regolare la qualità del video EVR.
IMFTopologyServiceLookup Consente a un mixer personalizzato o relatore di ottenere puntatori di interfaccia dall'EVR.
IMFVideoDeviceID Restituisce l'identificatore del dispositivo di un mixer O relatore EVR.
IMFVideoDisplayControl Controlla la modalità di visualizzazione del video di EVR.
IMFVideoMixerBitmap Alfa fonde un'immagine bitmap statica con il video.
IMFVideoMixerControl Controlla il modo in cui EVR (Enhanced Video Renderer) combina i sottostream video.
IMFVideoMixerControl2 Controlla le preferenze per la disincantazione video.
IMFVideoPositionMapper Mappe una posizione su un flusso video di input alla posizione corrispondente in un flusso video di output.
IMFVideoPresenter Esposto dal relatore EVR.
IMFVideoProcessor Controlla l'elaborazione video, inclusi regolazione, filtri di rumore e filtri dettagli.
IMFVideoRenderer Imposta un mixer o un relatore in EVR.
IMFVideoSampleAllocator Alloca gli esempi video.

 

In questa sezione

Argomento Descrizione
Uso del filtro EVR DirectShow Come usare EVR in un'applicazione DirectShow.
Uso del sink multimediale EVR Come usare EVR in un'applicazione Media Foundation.
Uso dei controlli di visualizzazione video Come controllare il modo in cui EVR visualizza il video all'interno della finestra dell'applicazione.
Uso dei controlli Mixer video Come controllare la modalità di funzionamento del mixer EVR.
Negoziazione del tipo di supporto EVR Descrive in che modo EVR determina i formati video che può accettare come input.
Mixer personalizzati Come scrivere un mixer personalizzato per L'EVR.
Come scrivere un relatore EVR Come scrivere un relatore personalizzato per EVR.

 

Riproduzione audio/video