Compartir a través de


VMR con varias secuencias (modo de mezcla)

[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.

VmR puede representar varios flujos de entrada. En esta configuración, denominada modo de mezcla, VMR carga su mezclador y compositor para realizar la mezcla y mezcla antes de la representación. El modo de mezcla se puede usar mientras el VMR está en modo de ventana o en modo sin ventanas.

El modo de mezcla requiere que el controlador de gráficos admita las marcas de funcionalidad DDCAPS_BLTFOURCC y DDCAPS_BLTSTRETCH (conversión de espacio de color y blitting extendido, respectivamente). Casi todos los nuevos controladores gráficos tienen esas funcionalidades. Además, el controlador debe admitir la creación de destinos de representación de Direct3D para la profundidad de píxeles de visualización actual. Algunos dispositivos no admiten operaciones de Direct3D cuando la pantalla está establecida en 24 bits por píxel. Para obtener más información, consulte la documentación del SDK de gráficos de DirectX.

Nota:

Cuando VMR mezcla varias secuencias de vídeo, el gráfico de filtros no busca correctamente. Si necesita buscar varias secuencias de vídeo, debe crear gráficos de filtro independientes que compartan el mismo objeto asignador-moderador personalizado.

 

Configuración de VMR-7 para varias secuencias

Para representar varias secuencias de entrada con VMR-7, haga lo siguiente:

  1. Antes de conectar cualquiera de los pines de entrada de VMR, llame al método IVMRFilterConfig::SetNumberOfStreams con el número de secuencias. Esto hace que VMR cargue el mezclador y el compositor y cree el número especificado de patillas de entrada.
  2. Llame a IVMRFilterConfig::SetRenderingPrefs para especificar varias preferencias de representación.
  3. Conecte las patillas a los filtros ascendentes. La manera más fácil de hacerlo es llamar a IGraphBuilder::RenderFile para cada flujo de entrada. Si el pin de salida del filtro ascendente (normalmente un descodificador) y el pin de entrada del VMR no puede aceptar una conexión, se creará una nueva instancia de VMR con la configuración predeterminada. Esto dará como resultado una nueva ventana con "ActiveMovie" en la barra de título. Para evitar que esto suceda, la aplicación siempre debe comprobar que se usa la instancia correcta de VMR mediante una llamada a un método como IPin::ConnectedTo. Otra opción es agregar el filtro de origen y, a continuación, conectar las patillas mediante IGraphBuilder::Connect.
  4. Use la interfaz IVMRMixerControl en VMR para controlar los parámetros de cada secuencia, como el valor alfa, el orden Z y el rectángulo de salida.
  5. Ejecute el gráfico de filtros.

Configuración de VMR-9 para varias secuencias

De forma predeterminada, VMR-9 crea cuatro patillas de entrada. Si desea mezclar más de cuatro secuencias de vídeo, llame a IVMRFilterConfig9::SetNumberOfStreams antes de conectar los pines de entrada. Use la interfaz IVMRMixerControl9 para establecer los parámetros de secuencia, como alfa, orden Z y posición.

Uso del modo de combinación de VMR