Filtro de mezclador de superposición

[La característica asociada a esta página, DirectShow, es una característica heredada. Se ha reemplazado por MediaPlayer, IMFMediaEngine y Captura de audio/vídeo en Media Foundation. Esas características se han optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use MediaPlayer, IMFMediaEngine y Audio/Video Capture en Media Foundation en lugar de DirectShow, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.

El filtro Mezclador superpuesto es un representador de vídeo diseñado específicamente para la reproducción de DVD y difundir secuencias de vídeo con subtítulos de línea 21. El mezclador de superposición también admite extensiones de puerto de vídeo (VPEs), lo que le permite trabajar con descodificadores MPEG-2 de hardware o sintonizadores de TV analógicos que envían vídeo directamente a la tarjeta gráfica, en lugar de sobre el bus PCI.

Nota:

Ahora se prefiere el representador de mezcla de vídeo 9 sobre el filtro Mezclador de superposición, excepto en escenarios de VPE.

 

El mezclador de superposición usa DirectDraw para la representación. Requiere una superficie superpuesta en la tarjeta gráfica. La secuencia de vídeo principal debe estar conectada a la patilla 0. Las secuencias secundarias (subtítulo gráficos cerrados o subpicturas de DVD) están conectadas a las patillas 1 y posteriores. El mezclador superpuesto divide las secuencias secundarias directamente en la suface principal; no mezcla ni mezcla alfa.

El mezclador de superposición usa el representador de vídeo para la administración de ventanas. Video Renderer se conecta al pin de salida del mezclador de superposición.

Este filtro se agrega automáticamente al gráfico de filtros cuando las aplicaciones usan las interfaces IDvdGraphBuilder e ICaptureGraphBuilder2 para crear el grafo. El Administrador de gráficos de filtros no agregará automáticamente el mezclador de superposición al grafo.

Nota:

En la tabla siguiente, los subtipos multimedia aceptados en el pin de entrada 0 dependen del hardware. El mezclador de superposición no puede determinar si se admite un subtipo determinado hasta que crea la superficie de DirectDraw. Por lo tanto, la única manera de que un filtro ascendente determine si se admite un subtipo es intentar una conexión con ese subtipo.

 

Etiqueta Value
Interfaces de filtro IAMOverlayFX, IAMVideoDecimationProperties, IBaseFilter, IDDrawExclModeVideo, IKsPropertySet, IMediaPosition,IMediaSeeking, IMixerOCX, IQualProp, IVPNotify, IVPNotify2
Tipos de medios de patillas de entrada Tipo principal: MEDIATYPE_Video
Subtipos:
  • MEDIASUBTYPE_Overlay (solo pin 0)
  • Formatos YUV de DirectDraw (solo pin 0)
  • Formatos de aceleración de vídeo de DirectDraw (solo pin 0)
  • Formatos RGB de DirectDraw (todos los pines de entrada)
Tipos de formato:
  • Format_VIDEOINFO
  • Format_VIDEOINFO2
Interfaces de patillas de entrada IAMVideoAccelerator, IKsPin, IKsPropertySet, IMemInputPin, IMixerPinConfig, IMixerPinConfig2, IOverlay (pin 0 only), IPin, IPinConnection, IQualityControl, IVPNotify, IVPNotify2
Tipos de medios de anclaje de salida MEDIATYPE_Video, MEDIASUBTYPE_Overlay
Interfaces de pin de salida IMediaPosition, IMediaSeeking, IPin, IQualityControl
Filtrar CLSID CLSID_OverlayMixer
CLSID de página de propiedades No hay página de propiedades.
Ejecutable qdvd.dll
Mérito MERIT_DO_NOT_USE
Categoría de filtro CLSID_LegacyAmFilterCategory

 

Observaciones

El mezclador de superposición usa la tecla de color de destino para mezclar superficies de vídeo con superposiciones. Divide la tecla de color y el vídeo secundario en la superficie principal y envía el vídeo principal a la superficie superpuesta. A continuación, la tarjeta gráfica compone las dos superficies en su búfer de fotogramas.

Para probar si el controlador de gráficos admite la superposición de hardware, llame a IDirectDraw7::GetCaps. Si el campo dwMaxVisibleOverlays de la estructura DDCAPS es mayor que cero, el controlador admite la superposición de hardware.

Las aplicaciones pueden controlar algunos comportamientos en el mezclador de superposición a través de la interfaz IMixerPinConfig2 . Los desarrolladores de juegos pueden usar el mezclador de superposición para mostrar vídeo en modo exclusivo de DirectDraw, como se describe más adelante en esta sección. El filtro de representador de mezcla de vídeos 9 (VMR-9) ahora proporciona una mejor compatibilidad con el vídeo en los juegos, sin embargo. Para obtener más información, consulte Uso del representador de mezcla de vídeos.

La siguiente información se proporciona para las ventajas de los desarrolladores de filtros y los desarrolladores de juegos que quieren usar el mezclador de superposición en modo exclusivo de DirectDraw.

Operaciones internas del mezclador de superposición

El mezclador de superposición expone un pin de entrada para cada flujo entrante. Normalmente, hay tres pines de entrada: pin 0 para los datos de vídeo y patillas 1 y 2 para los datos de subpicturas de la línea 21 y DVD. Internamente, el mezclador de superposición crea un objeto DirectDraw con una superficie principal que comprende todo el escritorio, además de una superficie superpuesta cuyo rectángulo está definido por el tamaño de la secuencia de vídeo en el Pin 0. Si el descodificador no especifica una clave de color, el mezclador de superposición usa teclas de color predeterminadas: gris oscuro para tarjetas gráficas más recientes y magenta para tarjetas de color anteriores de 256.

Nota:

Los resultados no están definidos si el descodificador entrega dos secuencias de vídeo secundarias simultáneamente en el mismo lugar en la superficie superpuesta. (Esto ocurre a veces con DVDs que contienen subpictura y línea 21 secuencias). El vídeo podría parpadear o mostrar solo una de las secuencias.

 

En Windows Vista o posterior, el mezclador de superposición deshabilita la composición del Administrador de ventanas de escritorio (DWM) si el controlador de pantalla admite la superposición de hardware. Las aplicaciones deben evitar el uso del filtro Mezclador de superposición; use VMR-9 o el representador de vídeo mejorado (EVR) en su lugar.

Conexión ascendente con el descodificador de vídeo

Normalmente, los pines de entrada del mezclador superpuesto se conectan a un descodificador de vídeo ascendente. La secuencia de vídeo principal debe conectarse al pin 0. Las secuencias de línea 21 o subpicture se conectan a la patilla 1 o superior. Si el descodificador es un descodificador de software que usa exclusivamente la CPU del host, la conexión entre el descodificador y el Pin 0 es una conexión IMemInputPin . Si el descodificador usa la aceleración de hardware, la conexión a Pin 0 debe usar la inferencia IAMVideoAccelerator . Estos dos tipos de conexiones son mutuamente excluyentes.

Si el descodificador dibuja directamente en la superficie de superposición, debe usar la interfaz IOverlay en el pin 0 e implementar la interfaz IOverlayNotify .

Los filtros que encapsulan un descodificador de hardware y se conectan al mezclador de superposición a través de un puerto de vídeo deben implementar la interfaz IVPConfig . El mezclador de superposición implementa la interfaz IVPNotify . Estas dos interfaces permiten al descodificador especificar las superficies superpuestas que requiere y permiten que el mezclador de superposición informe al descodificador de la ubicación de esas superficies en memoria de vídeo.

El mezclador de superposición también garantiza que el rectángulo de vídeo se escala correctamente. La captura de vídeo implica ciertos problemas con respecto al escalado de la imagen de vista previa y la captura de fotogramas de vídeo intercalados. Si está desarrollando un filtro o un controlador WDM para un dispositivo de captura de vídeo de hardware, consulte las páginas de referencia IVPConfig e IVPNotify para obtener más información sobre estos temas.

El mezclador de superposición no se usa en escenarios de captura USB o 1394. Se usa en la captura de vídeo sobre el bus PCI.

Conexión de bajada con el representador de vídeo

El mezclador de superposición tiene un pin de salida que se conecta al filtro Video Renderer . El representador de vídeo en este caso no representa el vídeo; simplemente administra la ventana de vídeo.

La conexión pin usa la interfaz IOverlay en lugar de la interfaz IMemInputPin . Video Renderer pasa su identificador de ventana a través del mezclador de superposición a DirectDraw, que administra el recorte del rectángulo. Las aplicaciones pueden controlar Video Renderer a través de las interfaces IVideoWindow e IBasicVideo2 en filter Graph Manager.

Modo exclusivo de DirectDraw

El modo exclusivo directDraw del mezclador superpuesto permite que los juegos muestren vídeos en alguna parte de la pantalla. En este modo, el mezclador de superposición representa el vídeo directamente en una superficie de DirectDraw creada por la aplicación de juego, en lugar de en una ventana proporcionada por el representador de vídeo. Esto permite a los juegos controlar la tecla de color. El mezclador de superposición expone solo un pin de entrada en modo exclusivo de DirectDraw, lo que significa que no se puede realizar ninguna mezcla de subpictura de línea 21 o DVD en este modo.

Para usar el mezclador de superposición en modo exclusivo de DirectDraw, cree una instancia del mezclador de superposición y vísela para la interfaz IDDrawExclModeVideo antes de compilar el gráfico de filtros. A continuación, llame a IDDrawExclModeVideo::SetDDrawSurface para especificar la superficie de DirectDraw para su representación. Una limitación significativa de este modo es que el juego no obtiene acceso a los bits de vídeo reales. Si usa IDDrawExclModeVideo, la aplicación crea la superficie principal y el mezclador de superposición crea la superficie de superposición.

También puede usar el modo exclusivo directDraw para realizar la representación sin ventanas (por ejemplo, en una página web), pero esto no se recomienda, ya que el mezclador de superposición no realiza ninguna combinación en este modo. Esto significa que no se pueden mostrar datos de línea 21 o subpicture.

Filtros directShow