Filtro del renderer video
[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, IMFMediaEnginee Acquisizione audio/video in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente di usare un nuovo codice MediaPlayer, IMFMediaEngine e Acquisizione audio/video in Media Foundation anziché DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.
Il filtro Video Renderer è un renderer video affidabile e a tutti gli scopi.
Nota
In Windows XP e versioni successive, il renderer video predefinito è il renderer di Video Mixing Renderer Filter 7 (VMR-7). VmR-7 e Video Renderer hanno entrambi il nome descrittivo "Video Renderer". Nelle piattaforme precedenti, il renderer video è il renderer predefinito. Vedere Scelta del renderer corretto.
Il Renderer video usa DirectDraw e le superfici sovrapposte, se la scheda video le supporta. Filter Graph Manager espone l'interfaccia IVideoWindow, che consente alle applicazioni di impostare e recuperare le proprietà nel Renderer video. Con le schede video più recenti, Il renderer video supporta il rendering a schermo intero. In caso contrario, Filter Graph Manager passa automaticamente al renderer a schermo intero filtro per la modalità schermo intero. Per altre informazioni, vedere IVideoWindow::p ut_FullScreenMod e.
! [Importante]
In genere, la finestra video di questo filtro elabora i messaggi in un thread di lavoro creato da Filter Graph Manager. Howerver, se un'applicazione crea direttamente il filtro usando CoCreateInstance, la finestra video elabora i messaggi nel thread dell'applicazione. In tal caso, il thread dell'applicazione deve avere un ciclo di messaggi per inviare messaggi alla finestra video. Inoltre, il thread non deve uscire fino all'ultima Release chiamata al Renderer video, che si verifica quando Filter Graph Manager si arresta. In caso contrario, l'applicazione potrebbe bloccarsi.
Etichetta | Valore |
---|---|
Interfacce di filtro | IBaseFilter, IBasicVideo, IBasicVideo2, IDirectDrawVideo, IKsPropertySet, IMediaPosition, IMediaSeeking, IQualityControl, IQualProp, IVideoWindow |
Tipi di supporti pin di input | Formati video non compressi. |
Interfacce del pin di input | IMemInputPin, IOverlay, IPin, IPinConnection, IQualityControl |
Tipi di supporti pin di output | Non applicabile. |
Interfacce pin di output | Non applicabile. |
Filtrare CLSID | CLSID_VideoRenderer |
CLSID della pagina delle proprietà | Nessuna pagina delle proprietà. |
Eseguibile | quartz.dll |
Merit | Windows XP e versioni successive: MERIT_UNLIKELY |
categoria filtro | CLSID_LegacyAmFilterCategory |
Osservazioni
Nella versione di debug di Quartz.dll, se il livello di debug LOG_TRACE è impostato su 5 o versione successiva, il Renderer video visualizza i timestamp di ogni fotogramma nella finestra video. Questi numeri non vengono visualizzati nella versione definitiva della DLL. Per altre informazioni, vedere Eseguire il debug di funzioni di output.
Le osservazioni seguenti sono destinate agli sviluppatori di filtri:
Il renderer video accetta formati YUV se la scheda grafica video supporta le superfici di sovrapposizione YUV. Quando si connette per la prima volta al filtro upstream, tuttavia, il Renderer video richiede un formato RGB che corrisponda alla profondità del colore delle impostazioni di monitoraggio correnti. Ad esempio, se l'impostazione di visualizzazione corrente è a 24 bit, il filtro upstream deve essere in grado di fornire video RGB a 24 bit. Quando il grafico del filtro passa a uno stato di esecuzione, Il renderer video negozia una modifica del formato dinamico allo spazio dei colori YUV appropriato.
Connettendosi con un tipo RGB, il Renderer video garantisce che possa usare GDI nel caso in cui DirectDraw non sia disponibile. Passerà a GDI se un'altra applicazione usa la memoria video, se il rettangolo video si sposta su due monitor su un sistema multi-monitor o se il rettangolo video è completamente nascosto da un'altra finestra.
Nota
Il renderer di combinazione video non esegue questo tipo di modifica del formato dinamico e non richiede un tipo di supporto RGB, perché non usa mai GDI per il rendering.
Per negoziare una modifica del formato, il Renderer video chiama IPin::QueryAccept con il nuovo tipo di supporto. Se il filtro upstream restituisce S_OK, il renderer video collega il nuovo supporto all'esempio successivo. Il filtro upstream deve chiamare IMediaSample::GetMediaType in ogni esempio. Se GetMediaType restituisce un valoreNULL non, indica una modifica del formato e il filtro upstream deve rispondere cambiando i tipi di output. Non cambiare i tipi nel metodo QueryAccept. Il filtro upstream deve accettare almeno i tipi RGB principali e idealmente dovrebbe supportare i tipi YUV comuni. Durante lo streaming, il Renderer video potrebbe passare da un numero qualsiasi di volte tra i tipi YUV e RGB. Il renderer video non accetta modifiche al formato dinamico avviate dal filtro upstream.
Quando il Renderer video disegna in una superficie di sovrapposizione DirectDraw, alloca un singolo buffer per il relativo pin di input. Se il filtro upstream tenta di forzare una connessione usando più buffer, il renderer video non sarà in grado di usare la superficie di sovrapposizione.
Argomenti correlati