Filtro del renderer video

Il filtro Renderer video è un renderer video affidabile e per tutti gli scopi.

Nota

In Windows XP e versioni successive, il renderer video predefinito è il renderer di mix video 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 superfici DirectDraw e sovrapposizione, se la scheda video li supporta. Filtro Graph Manager espone l'interfaccia IVideoWindow, che consente alle applicazioni di impostare e recuperare le proprietà nel Renderer video. Con schede video più recenti, Il Renderer video supporta il rendering a schermo intero. In caso contrario, Il filtro Graph Manager passa automaticamente al filtro Renderer schermo intero per la modalità schermo intero. Per altre informazioni, vedere IVideoWindow::p ut_FullScreenMode .

  • [! Importante]

    In genere, questa finestra video del 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 alla chiamata finale release al renderer video, che si verifica quando il filtro Graph Manager si arresta. In caso contrario, l'applicazione potrebbe essere deadlock.

     

Label Valore
Interfacce di filtro IBaseFilter, IBasicVideo, IBasicVideo2, IDirectDrawVideo, IKsPropertySet, IMediaPosition, IMediaSeeking, IQualityControl, IQualityControl, IQualProp, IVideoWindow
Tipi di supporti pin di input Formati video non compressi.
Interfacce pin di input IMemInputPin, IOverlay, IPin, IPinConnection, IQualityControl
Tipi di supporti di pin di output Non applicabile.
Interfacce pin di output Non applicabile.
Filtro CLSID CLSID_VideoRenderer
Pagina delle proprietà CLSID Nessuna pagina delle proprietà.
File eseguibile quartz.dll
Merito Windows XP e versioni successive: MERIT_UNLIKELY
Categoria filtro CLSID_LegacyAmFilterCategory

 

Commenti

Nella versione di debug di Quartz.dll, se il livello di debug LOG_TRACE è impostato su 5 o versioni successive, il Renderer video visualizza i timestamp di ogni fotogramma nella finestra video. Questi numeri non vengono visualizzati nella versione al dettaglio della DLL. Per altre informazioni, vedere 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 corrisponde alla profondità di 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 dinamica del formato allo spazio dei colori YUV appropriato.

Connettendosi a un tipo RGB, il Renderer video garantisce che possa usare GDI nel caso in cui DirectDraw non sia disponibile. Passa a GDI se un'altra applicazione usa la memoria video, se il rettangolo video straddles due monitor su un sistema multi-monitor o se il rettangolo video è completamente oscurato da un'altra finestra.

Nota

Il renderer di mix 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 valore non NULL , indica una modifica del formato e il filtro upstream deve rispondere passando ai tipi di output. Non cambiare i tipi nel metodo QueryAccept . Il filtro upstream deve accettare almeno i tipi RGB principali e idealmente deve supportare i tipi YUV comuni. Durante lo streaming, il Renderer video potrebbe tornare indietro e indietro tra i tipi YUV e RGB qualsiasi numero di volte. Il Renderer video non accetta modifiche di formato dinamico avviate dal filtro upstream.

Quando il renderer video disegna in una superficie di sovrapposizione DirectDraw, alloca un singolo buffer per il 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.

Filtri DirectShow