Condividi tramite


Filtro del renderer video

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation invece di 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 Del renderer video è un renderer video affidabile e per tutti gli scopi.

Nota

In Windows XP e versioni successive, il renderer video predefinito è il filtro del renderer di combinazione 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 le superfici DirectDraw e overlay, 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 filtro Renderer a schermo intero per la modalità schermo intero. Per altre informazioni, vedere IVideoWindow::p ut_FullScreenMode .

  • ! [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 alla chiamata di rilascio finale al Renderer video, che si verifica quando Filter Graph Manager viene arrestato. In caso contrario, l'applicazione potrebbe essere deadlock.

     

Etichetta Valore
Interfacce di filtro IBaseFilter, IBasicVideo, IBasicVideo2, IDirectDrawVideo, IKsPropertySet, IMediaPosition, IMediaSeeking, IQualityControl, IQualityControl, IQualProp, IVideoWindow
Tipi di supporti di aggiunta 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
CLSID della pagina delle proprietà 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 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 Funzioni di output di debug.

Le note 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 corrispondente 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 dinamica del formato 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. Passa 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 missaggio 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 cambiando i 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 spostarsi tra tipi YUV e RGB qualsiasi numero di volte. Il renderer video non accetta modifiche al formato dinamico avviate dal filtro upstream.

Quando il renderer video si 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.

Filtri DirectShow