Filtro Overlay Mixer
[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 Mixer overlay è un renderer video progettato appositamente per la riproduzione e la trasmissione di flussi video con sottotitoli line-21. Overlay Mixer supporta anche le estensioni di porta video (VPE), consentendo di lavorare con decodificatori HARDWARE MPEG-2 o tv analogici che inviano video direttamente alla scheda grafica, anziché tramite il bus PCI.
Nota
Il renderer di missaggio video 9 è ora preferibile rispetto al filtro Mixer di sovrapposizione, ad eccezione degli scenari VPE.
Il mixer overlay usa DirectDraw per il rendering. Richiede una superficie di sovrapposizione sulla scheda grafica. Il flusso video primario deve essere connesso al pin 0. I flussi secondari (didascalia elementi grafici chiusi o sottopicture DVD) sono connessi ai pin 1 e versioni successive. Il mixer overlay blits the secondary streams directly on the primary suface; non mescola o alfa li mescola.
Il mixer di sovrapposizione usa il renderer video per la gestione delle finestre. Il renderer video si connette al pin di output di Overlay Mixer.
Questo filtro viene aggiunto automaticamente al grafo del filtro quando le applicazioni usano le interfacce IBuilder e ICaptureGraphBuilder2 per creare il grafico. Filter Graph Manager non aggiungerà automaticamente il mixer di sovrapposizione al grafico.
Nota
Nella tabella seguente i sottotipi multimediali accettati nel pin di input 0 dipendono dall'hardware. Il mixer di sovrimpressione non è in grado di determinare se un determinato sottotipo è supportato fino a quando non crea la superficie DirectDraw. Di conseguenza, l'unico modo per un filtro upstream per determinare se è supportato un sottotipo consiste nel tentare una connessione con tale sottotipo.
Etichetta | Valore |
---|---|
Interfacce di filtro | IAMOverlayFX, IAMVideoDecimationProperties, IBaseFilter, IDDrawExclModeVideo, IKsPropertySet, IMediaPosition, IMediaSeeking, IMixerOCX, IQualProp, IVPNotify, IVPNotify2 |
Tipi di supporti di aggiunta di input | Tipo principale: MEDIATYPE_Video Sottotipi:
|
Interfacce pin di input | IAMVideoAccelerator, IKsPin, IKsPropertySet, IMemInputPin, IMixerPinConfig, IMixerPinConfig2, IOverlay (solo pin 0), IPin, IPinConnection, IQualityControl, IVPNotify, IVPNotify2 |
Tipi di supporti di pin di output | MEDIATYPE_Video, MEDIASUBTYPE_Overlay |
Interfacce pin di output | IMediaPosition, IMediaSeeking, IPin, IQualityControl |
Filtro CLSID | CLSID_OverlayMixer |
CLSID della pagina delle proprietà | Nessuna pagina delle proprietà. |
File eseguibile | qdvd.dll |
Merito | MERIT_DO_NOT_USE |
Categoria filtro | CLSID_LegacyAmFilterCategory |
Commenti
Il mixer di sovrapposizione usa la combinazione di tasti colore di destinazione per combinare superfici video con sovrimpressioni. Blits the color key and the secondary video to the primary surface, and invia il video primario alla superficie di sovrapposizione. La scheda grafica quindi composita le due superfici nel buffer dei frame.
Per verificare se il driver grafico supporta la sovrimpressione hardware, chiamare IDirectDraw7::GetCaps. Se il campo dwMaxVisibleOverlays nella struttura DDCAPS è maggiore di zero, il driver supporta la sovrimpressione hardware.
Le applicazioni possono controllare alcuni comportamenti in Overlay Mixer tramite l'interfaccia IMixerPinConfig2 . Gli sviluppatori di giochi possono usare overlay mixer per visualizzare il video in modalità esclusiva DirectDraw, come descritto più avanti in questa sezione. Il filtro del renderer di combinazione video 9 (VMR-9) offre ora un supporto migliore per i video nei giochi. Per altre informazioni, vedere Uso del renderer di combinazione di video.
Le informazioni seguenti vengono fornite a vantaggio degli sviluppatori di filtri e degli sviluppatori di giochi che vogliono usare il mixer di sovrimpressione in modalità esclusiva DirectDraw.
Operazioni interne del mixer sovrapposto
Il mixer overlay espone un pin di input per ogni flusso in ingresso. In genere, ci sono tre pin di input: pin 0 per i dati video e pin 1 e 2 per i dati secondari riga 21 e DVD. Internamente, overlay mixer crea un oggetto DirectDraw con una superficie primaria che comprende l'intero desktop, oltre a una superficie di sovrimpressione il cui rettangolo è definito dalle dimensioni del flusso video sul Pin 0. Se il decodificatore non specifica una chiave di colore, il mixer sovrimpressione utilizza i tasti colore predefiniti: grigio scuro per le schede grafiche più recenti e magenta per le schede a colori precedenti di 256 colori.
Nota
I risultati non sono definiti se il decodificatore distribuisce due flussi video secondari contemporaneamente nella stessa posizione sulla superficie di sovrapposizione. Questo problema si verifica talvolta con DVD che contengono sottopicture e flussi di riga 21. Il video potrebbe sfarfallio o visualizzare solo uno dei flussi.
In Windows Vista o versione successiva, il mixer di sovrapposizione disabilita la composizione di Gestione finestre desktop se il driver di visualizzazione supporta la sovrimpressione hardware. Le applicazioni devono evitare di usare il filtro Mixer overlay; usare invece VMR-9 o il renderer video avanzato (EVR).
Connessione upstream con il decodificatore video
In genere i pin di input di Overlay Mixer si connettono a un decodificatore video upstream. Il flusso video primario deve connettersi al pin 0. I flussi della riga 21 o secondaria si connettono al pin 1 o versione successiva. Se il decodificatore è un decodificatore software che usa esclusivamente la CPU host, la connessione tra il decodificatore e il Pin 0 è una connessione IMemInputPin . Se il decodificatore usa l'accelerazione hardware, la connessione al Pin 0 deve usare l'inferface di IAMVideoAccelerator . Questi due tipi di connessioni si escludono a vicenda.
Se il decodificatore si disegna direttamente sulla superficie di sovrapposizione, deve usare l'interfaccia IOverlay sul pin 0 e implementare l'interfaccia IOverlayNotify .
I filtri che incapsulano un decodificatore hardware e si connettono al mixer di sovrapposizione tramite una porta video devono implementare l'interfaccia IVPConfig . Overlay Mixer implementa l'interfaccia IVPNotify . Queste due interfacce consentono al decodificatore di specificare le superfici di sovrimpressione necessarie e consentono al mixer di sovrimpressione di informare il decodificatore della posizione di tali superfici in memoria video.
Il mixer di sovrapposizione garantisce anche che il rettangolo video venga ridimensionato correttamente. L'acquisizione video comporta alcuni problemi relativi al ridimensionamento dell'immagine di anteprima e all'acquisizione di fotogrammi video interleaved. Se si sviluppa un filtro o un driver WDM per un dispositivo di acquisizione video hardware, fare riferimento alle pagine di riferimento IVPConfig e IVPNotify per altre informazioni su questi argomenti.
Il mixer di sovrimpressione non viene usato negli scenari di acquisizione USB o 1394. Viene usato nell'acquisizione video sul bus PCI.
Connessione downstream con il renderer video
Il mixer di sovrimpressione ha un pin di output che si connette al filtro Del renderer video . Il renderer video in questo caso non esegue il rendering del video; gestisce semplicemente la finestra del video.
La connessione pin usa l'interfaccia IOverlay anziché l'interfaccia IMemInputPin . Il renderer video passa il relativo handle di finestra tramite il mixer di sovrapposizione a DirectDraw, che gestisce il ritaglio del rettangolo. Le applicazioni possono controllare il Renderer video tramite le interfacce IVideoWindow e IBasicVideo2 in Filter Graph Manager.
Modalità esclusiva DirectDraw
La modalità esclusiva DirectDraw di Overlay Mixer consente ai giochi di visualizzare video in parte dello schermo. In questa modalità, il Mixer sovrimpressione esegue il rendering del video direttamente in un'area DirectDraw creata dall'applicazione gioco, anziché in una finestra fornita dal Renderer video. Ciò consente ai giochi di controllare il tasto colore. Il mixer di sovrapposizione espone solo un pin di input in modalità esclusiva DirectDraw, che significa che non è possibile eseguire alcuna combinazione di sottopicture line 21 o DVD in questa modalità.
Per usare Il mixer di sovrapposizione in modalità esclusiva DirectDraw, creare un'istanza di Overlay Mixer ed eseguirne una query per l'interfaccia IDDrawExclModeVideo prima di compilare il grafico del filtro. Chiamare quindi IDDrawExclModeVideo::SetDDrawSurface per specificare l'area DirectDraw per il rendering. Una limitazione significativa di questa modalità è che il gioco non ottiene l'accesso ai bit video effettivi. Se si usa IDDrawExclModeVideo, l'applicazione crea la superficie primaria e il mixer di sovrapposizione crea la superficie di sovrapposizione.
È anche possibile usare la modalità esclusiva DirectDraw per eseguire il rendering senza finestre, ad esempio in una pagina Web, ma non è consigliabile, perché Il mixer di sovrapposizione non esegue alcuna combinazione in questa modalità. Ciò significa che non è possibile visualizzare dati di riga 21 o sottopicture.
Argomenti correlati