Filtro de mixer de sobreposição
[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation em vez de DirectShow, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]
O filtro Do Mixer de Sobreposição é um renderizador de vídeo projetado especificamente para reprodução de DVD e transmissão de fluxos de vídeo com legendagem oculta de linha 21. O Mixer de Sobreposição também dá suporte a VPEs (Extensões de Porta de Vídeo), permitindo que ele funcione com decodificadores MPEG-2 de hardware ou sintonizadores de TV analógicos que enviam vídeo diretamente para os elementos gráficos cartão, em vez de sobre o barramento PCI.
Observação
O Renderizador de Combinação de Vídeo 9 agora é preferencial em vez do filtro Mixer de Sobreposição, exceto em cenários de VPE.
O Mixer de Sobreposição usa DirectDraw para renderização. Ele requer uma superfície de sobreposição nos elementos gráficos cartão. O fluxo de vídeo primário deve ser conectado ao pino 0. Fluxos secundários (elementos gráficos legenda fechados ou subpicturas de DVD) são conectados a pinos 1 e superiores. O Mixer de Sobreposição blits os fluxos secundários diretamente no suface primário; ele não mistura nem os mistura alfa.
O Mixer de Sobreposição usa o Renderizador de Vídeo para gerenciamento de janelas. O Renderizador de Vídeo conecta-se ao pino de saída do Mixer de Sobreposição.
Esse filtro é adicionado ao grafo de filtro automaticamente quando os aplicativos usam as interfaces IDvdGraphBuilder e ICaptureGraphBuilder2 para criar o grafo. O Gerenciador de Grafo de Filtro não adicionará automaticamente o Mixer de Sobreposição ao grafo.
Observação
Na tabela a seguir, os subtipos de mídia aceitos no pino de entrada 0 dependem do hardware. O Mixer de Sobreposição não pode determinar se há suporte para um subtipo específico até que ele crie a superfície do DirectDraw. Portanto, a única maneira de um filtro de upstream determinar se há suporte para um subtipo é tentar uma conexão com esse subtipo.
Rótulo | Valor |
---|---|
Interfaces de filtro | IAMOverlayFX, IAMVideoDecimationProperties, IBaseFilter, IDDrawExclModeVideo, IKsPropertySet, IMediaPosition, IMediaSeeking, IMixerOCX, IQualProp, IVPNotify, IVPNotify2 |
Tipos de mídia de pino de entrada | Tipo principal: MEDIATYPE_Video Subtipos:
|
Interfaces de pino de entrada | IAMVideoAccelerator, IKsPin, IKsPropertySet, IMemInputPin, IMixerPinConfig, IMixerPinConfig2, IOverlay (somente pin 0), IPin, IPinConnection, IQualityControl, IVPNotify, IVPNotify2 |
Tipos de mídia de pino de saída | MEDIATYPE_Video, MEDIASUBTYPE_Overlay |
Interfaces de pino de saída | IMediaPosition, IMediaSeeking, IPin, IQualityControl |
Filtrar CLSID | CLSID_OverlayMixer |
CLSID da página de propriedades | Nenhuma página de propriedades. |
Executável | qdvd.dll |
Mérito | MERIT_DO_NOT_USE |
Categoria de Filtro | CLSID_LegacyAmFilterCategory |
Comentários
O Mixer de Sobreposição usa a chave de cores de destino para misturar superfícies de vídeo com sobreposições. Ele corta a chave de cor e o vídeo secundário para a superfície primária e envia o vídeo primário para a superfície de sobreposição. Os elementos gráficos cartão em seguida, compõem as duas superfícies em seu buffer de quadros.
Para testar se o driver gráfico dá suporte à sobreposição de hardware, chame IDirectDraw7::GetCaps. Se o campo dwMaxVisibleOverlays na estrutura DDCAPS for maior que zero, o driver dará suporte à sobreposição de hardware.
Os aplicativos podem controlar alguns comportamentos no Mixer de Sobreposição por meio da interface IMixerPinConfig2 . Os desenvolvedores de jogos podem usar o Mixer de Sobreposição para exibir vídeos no Modo Exclusivo DirectDraw, conforme descrito mais adiante nesta seção. No entanto, o VMR-9 (Video Mixing Renderer Filter 9 ) agora oferece melhor suporte para vídeos em jogos. Para obter mais informações, consulte Usando o Renderizador de Combinação de Vídeos.
As informações a seguir são fornecidas para o benefício de desenvolvedores de filtros e desenvolvedores de jogos que desejam usar o Mixer de Sobreposição no Modo Exclusivo DirectDraw.
Operações internas do mixer de sobreposição
O Mixer de Sobreposição expõe um pino de entrada para cada fluxo de entrada. Normalmente, há três pinos de entrada: fixar 0 para dados de vídeo e fixar 1 e 2 para dados de subpictura de DVD e linha 21. Internamente, o Mixer de Sobreposição cria um objeto DirectDraw com uma superfície primária que compreende toda a área de trabalho, além de uma superfície de sobreposição cujo retângulo é definido pelo tamanho do fluxo de vídeo no Pin 0. Se o decodificador não especificar uma chave de cor, o Mixer de Sobreposição usará chaves de cores padrão: cinza escuro para placas gráficas mais recentes e magenta para cartões de 256 cores mais antigos.
Observação
Os resultados serão indefinidos se o decodificador fornecer dois fluxos de vídeo secundários simultaneamente no mesmo lugar na superfície de sobreposição. (Às vezes, isso ocorre com DVDs que contêm subpictura e fluxos de linha 21.) O vídeo pode cintilar ou exibir apenas um dos fluxos.
No Windows Vista ou posterior, o Mixer de Sobreposição desabilita a composição do DWM (Gerenciador de Janelas da Área de Trabalho) se o driver de exibição der suporte à sobreposição de hardware. Os aplicativos devem evitar o uso do filtro Mixer de Sobreposição; use a VMR-9 ou o EVR (Renderizador de Vídeo Avançado).
Conexão upstream com o Decodificador de Vídeo
Normalmente, os pinos de entrada do Mixer de Sobreposição se conectam a um upstream decodificador de vídeo. O fluxo de vídeo primário deve se conectar ao pino 0. Os fluxos de linha 21 ou de subpictura se conectam ao pino 1 ou superior. Se o decodificador for um decodificador de software que usa exclusivamente a CPU do host, a conexão entre o decodificador e o Pin 0 será uma conexão IMemInputPin . Se o decodificador usar aceleração de hardware, a conexão com o Pin 0 deverá usar a inferência IAMVideoAccelerator . Esses dois tipos de conexões são mutuamente exclusivos.
Se o decodificador desenhar diretamente na superfície de sobreposição, ele deverá usar a interface IOverlay no pin 0 e implementar a interface IOverlayNotify .
Os filtros que encapsulam um decodificador de hardware e se conectam ao Mixer de Sobreposição por meio de uma porta de vídeo devem implementar a interface IVPConfig . O Mixer de Sobreposição implementa a interface IVPNotify . Essas duas interfaces permitem que o decodificador especifique as superfícies de sobreposição necessárias e permitem que o Mixer de Sobreposição informe o decodificador do local dessas superfícies na memória de vídeo.
O Mixer de Sobreposição também garante que o retângulo de vídeo seja dimensionado corretamente. A captura de vídeo envolve determinados problemas em relação ao dimensionamento da imagem de visualização e à captura de quadros de vídeo intercalados. Se você estiver desenvolvendo um filtro ou driver WDM para um dispositivo de captura de vídeo de hardware, consulte as páginas de referência IVPConfig e IVPNotify para obter mais informações sobre esses tópicos.
O Mixer de Sobreposição não é usado em cenários de captura 1394 ou USB. Ele é usado na captura de vídeo no barramento PCI.
Conexão downstream com o Renderizador de Vídeo
O Mixer de Sobreposição tem um pino de saída que se conecta ao filtro do Renderizador de Vídeo . Nesse caso, o Renderizador de Vídeo não renderiza o vídeo; ele simplesmente gerencia a janela de vídeo.
A conexão de pino usa a interface IOverlay em vez da interface IMemInputPin . O Renderizador de Vídeo passa o identificador de janela por meio do Mixer de Sobreposição para o DirectDraw, que gerencia o recorte de retângulo. Os aplicativos podem controlar o Renderizador de Vídeo por meio das interfaces IVideoWindow e IBasicVideo2 no Gerenciador de Grafo de Filtro.
Modo Exclusivo do DirectDraw
O modo exclusivo DirectDraw do Mixer de Sobreposição permite que os jogos exibam vídeos em alguma parte da tela. Nesse modo, o Overlay Mixer renderiza o vídeo diretamente para uma superfície DirectDraw criada pelo aplicativo de jogo, em vez de para uma janela fornecida pelo Renderizador de Vídeo. Isso permite que os jogos controlem a chave de cor. O Mixer de Sobreposição expõe apenas um pino de entrada no modo exclusivo DirectDraw, o que significa que nenhuma mistura de subpictura de Linha 21 ou DVD pode ser executada nesse modo.
Para usar o Mixer de Sobreposição no modo exclusivo DirectDraw, crie uma instância do Mixer de Sobreposição e consulte-a para a interface IDDrawExclModeVideo antes de criar o grafo de filtro. Em seguida, chame IDDrawExclModeVideo::SetDDrawSurface para especificar a superfície DirectDraw para renderização. Uma limitação significativa desse modo é que o jogo não tem acesso aos bits de vídeo reais. Se você usar IDDrawExclModeVideo, seu aplicativo criará a superfície primária e o Overlay Mixer criará a superfície de sobreposição.
Você também pode usar o modo exclusivo DirectDraw para executar a renderização sem janelas, por exemplo, em uma página da Web, mas isso não é recomendado, pois o Overlay Mixer não executa nenhuma combinação nesse modo. Isso significa que nenhum dado de linha 21 ou de subpictura pode ser exibido.
Tópicos relacionados