Compartir a través de


Filtro de representador de vídeo

[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 Video Renderer es un representador de vídeo sólido y de uso completo.

Nota:

En Windows XP y versiones posteriores, el representador de vídeo predeterminado es el filtro del representador de mezcla de vídeos 7 (VMR-7). VmR-7 y Video Renderer tienen el nombre descriptivo "Video Renderer". En plataformas anteriores, Video Renderer es el representador predeterminado. Consulte Elección del representador correcto.

 

Video Renderer usa DirectDraw y superficies superpuestas, si la tarjeta de vídeo las admite. El Administrador de gráficos de filtros expone la interfaz IVideoWindow , que permite a las aplicaciones establecer y recuperar propiedades en el representador de vídeo. Con las tarjetas de vídeo más recientes, Video Renderer admite la representación en pantalla completa. De lo contrario, el Administrador de gráficos de filtros cambia automáticamente al filtro Representador de pantalla completa para el modo de pantalla completa. Consulte IVideoWindow::p ut_FullScreenMode para obtener más información.

  • Importante

    Normalmente, la ventana de vídeo de este filtro procesa los mensajes en un subproceso de trabajo creado por el Administrador de gráficos de filtros. Howerver, si una aplicación crea directamente el filtro mediante CoCreateInstance, la ventana de vídeo procesa los mensajes en el subproceso de la aplicación. En ese caso, el subproceso de aplicación debe tener un bucle de mensajes para enviar mensajes a la ventana de vídeo. Además, el subproceso no debe salir hasta que se cierre la llamada de versión final al representador de vídeo, que se produce cuando se cierra el Administrador de gráficos de filtros. De lo contrario, la aplicación podría interbloquear.

     

Etiqueta Value
Interfaces de filtro IBaseFilter, IBasicVideo, IBasicVideo2, IDirectDrawVideo, IKsPropertySet, IMediaPosition, IMediaSeeking, IQualityControl, IQualProp, IVideoWindow
Tipos de medios de patillas de entrada Formatos de vídeo sin comprimir.
Interfaces de patillas de entrada IMemInputPin, IOverlay, IPin, IPinConnection, IQualityControl
Tipos de medios de anclaje de salida No es aplicable.
Interfaces de pin de salida No es aplicable.
Filtrar CLSID CLSID_VideoRenderer
CLSID de página de propiedades No hay página de propiedades.
Ejecutable quartz.dll
Mérito Windows XP y versiones posteriores: MERIT_UNLIKELY
Categoría de filtro CLSID_LegacyAmFilterCategory

 

Observaciones

En la versión de depuración de Quartz.dll, si el nivel de depuración de LOG_TRACE está establecido en 5 o superior, Video Renderer muestra las marcas de tiempo de cada fotograma en la ventana de vídeo. Estos números no aparecen en la versión comercial del archivo DLL. Para obtener más información, consulte Funciones de salida de depuración.

Los siguientes comentarios están diseñados para desarrolladores de filtros:

Video Renderer acepta formatos YUV si la tarjeta gráfica de vídeo admite superficies de superposición de YUV. Sin embargo, cuando se conecta por primera vez al filtro ascendente, Video Renderer requiere un formato RGB que coincida con la profundidad de color de la configuración actual del monitor. Por ejemplo, si la configuración de visualización actual es de color de 24 bits, el filtro ascendente debe poder proporcionar vídeo RGB de 24 bits. Cuando el grafo de filtro cambia a un estado de ejecución, Video Renderer negocia un cambio de formato dinámico en el espacio de color YUV adecuado.

Al conectarse con un tipo RGB, Video Renderer garantiza que puede usar GDI en caso de que DirectDraw no esté disponible. Cambiará a GDI si otra aplicación usa la memoria de vídeo, si el rectángulo de vídeo divide dos monitores en un sistema de varios monitores, o si el rectángulo de vídeo está completamente oculto por otra ventana.

Nota:

El representador de mezcla de vídeos no realiza este tipo de cambio de formato dinámico y no requiere un tipo de medio RGB, ya que nunca usa GDI para la representación.

 

Para negociar un cambio de formato, Video Renderer llama a IPin::QueryAccept con el nuevo tipo de medio. Si el filtro ascendente devuelve S_OK, Video Renderer adjunta el nuevo medio al ejemplo siguiente. El filtro ascendente debe llamar a IMediaSample::GetMediaType en cada ejemplo. Si GetMediaType devuelve un valor distinto de NULL , indica un cambio de formato y el filtro ascendente debe responder cambiando los tipos de salida. (No cambie los tipos en el método QueryAccept ). El filtro ascendente debe aceptar al menos los tipos RGB principales y, idealmente, debe admitir los tipos YUV comunes. Durante el streaming, Video Renderer puede cambiar entre los tipos YUV y RGB cualquier número de veces. Video Renderer no acepta cambios de formato dinámico iniciados por el filtro ascendente.

Cuando video Renderer dibuja en una superficie de superposición de DirectDraw, asigna un único búfer para su pin de entrada. Si el filtro ascendente intenta forzar una conexión mediante varios búferes, Video Renderer no podrá usar la superficie de superposición.

Filtros directShow