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:
  • MEDIASUBTYPE_Overlay (somente fixar 0)
  • Formatos YUV do DirectDraw (somente pino 0)
  • Formatos de Aceleração de Vídeo DirectDraw (somente pino 0)
  • Formatos RGB do DirectDraw (todos os pinos de entrada)
Tipos de formato:
  • Format_VIDEOINFO
  • Format_VIDEOINFO2
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.

Filtros do DirectShow