Condividi tramite


Uso del filtro EVR DirectShow

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

Per creare il filtro EVR (Enhanced Video Renderer), chiamare CoCreateInstance. Il CLSID è CLSID_EnhancedVideoRenderer, definito in uuids.h. Non è necessario chiamare MFStartup o MFShutdown per usare il filtro EVR.

Per altre informazioni sull'uso del filtro EVR in un'applicazione DirectShow, vedere Riproduzione audio/video in DirectShow.

Il filtro EVR inizia con un pin di input, che corrisponde al flusso di riferimento. Per aggiungere pin per i sottostream, eseguire una query sul filtro per l'interfaccia IEVRFilterConfig e chiamare IEVRFilterConfig::SetNumberOf Flussi. Chiamare questo metodo prima di connettere eventuali pin di input. Il pin 0 è sempre il flusso di riferimento. Connessione questo pin prima di qualsiasi altro pin, perché il formato del flusso di riferimento potrebbe limitare i formati di sottostream disponibili.

Prima di avviare il grafico, impostare la finestra di ritaglio video e il rettangolo di destinazione. Per altre informazioni, vedere Uso dei controlli di visualizzazione video.

A differenza del renderer di mixaggio video (VMR), EVR non dispone di modalità operative (finestra, senza finestra e così via). In particolare:

  • EVR non supporta la modalità finestra. L'applicazione deve fornire la finestra di ritaglio.
  • L'EVR non dispone di una modalità senza rendering. Per sostituire il relatore predefinito, chiama IMFVideoRenderer::InitializeRenderer.
  • L'EVR non dispone di una modalità di combinazione. L'EVR crea sempre il mixer. Se si dispone di un flusso di input, non è necessario chiamare SetNumberOf Flussi per forzare L'EVR a usare il mixer.

Interfacce di filtro

Il filtro EVR espone le interfacce seguenti. Alcune di queste interfacce sono documentate in DirectShow SDK. Usare QueryInterface per recuperare i puntatori a queste interfacce:

Interfacce del pin di input

I pin di input nel filtro EVR espongono le interfacce seguenti. Usare QueryInterface per recuperare i puntatori a queste interfacce:

Inoltre, è possibile usare l'interfaccia IMFGetService per recuperare l'interfaccia seguente:

Riproduzione audio/video in DirectShow

Renderer video avanzato