X extensión de vídeo

La extensión de video X , a menudo abreviada como XVideo o Xv , proporciona un mecanismo de salida de video para el sistema X Window . El protocolo fue desarrollado originalmente por David Carver, y su versión actual (la segunda) fue escrita en julio de 1991 . Su objetivo principal hasta el día de hoy sigue siendo escalar el hardware ( las tarjetas de video están implícitas como equipo ) del video que se está reproduciendo para verlo en modo de pantalla completa. Sin XVideo, este trabajo tendría que hacerlo íntegramente el procesador central , lo que requeriría más recursos y podría provocar en algunos casos una reproducción lenta o una degradación de la imagen. Además, la extensión de video X usa la tarjeta de video para la conversión del espacio de color . Con él, puede ajustar el hardware el brillo, el contraste y el tono de la transmisión de video que se muestra.

Para usar esta extensión, tres cosas son necesarias y suficientes:

La mayoría de las tarjetas gráficas modernas brindan la funcionalidad necesaria para XVideo. Se les conoce comúnmente como soporte de hardware para escalado y aceleración de conversión YUV , o simplemente gráficos 2D acelerados por hardware . El servidor X XFree86 (para sistemas operativos UNIX, Linux y parcialmente Mac OS X) admite la extensión XVideo desde la versión 4.0.2. Para asegurarse de que su servidor X admita esta extensión, puede usar la utilidad xdpyinfo . Y para verificar que la tarjeta de video actual admita las funciones necesarias, puede usar el programa xvinfo .

Reproducción y procesamiento

Los programas populares de reproducción de video que se usan en X Window, como MPlayer , MythTV o xine , generalmente ya tienen soporte para la salida de video a través de XVideo. Por lo tanto, es aconsejable usar esta extensión siempre que la tarjeta de video instalada lo permita y los controladores lo admitan. La aceleración se notará incluso en equipos con procesadores rápidos.

A pesar de que el protocolo brinda la capacidad de leer y escribir flujos de video desde y hacia tarjetas de video, hoy en día las funciones más solicitadas son XvPutImage y XvShmPutImage . Los clientes decodifican fotogramas uno por uno y los pasan a la tarjeta de video para el escalado, la conversión y la visualización del hardware.

Mostrar

Una vez que la imagen ha sido escalada y preparada, lo único que queda por hacer es mostrarla. Hay varias formas de acelerar la salida de video en esta etapa. Y dado que la aceleración total implica que la tarjeta de video es responsable de escalar, convertir y generar el video, el método específico dependerá de dónde se mostrará exactamente la imagen.

El rol del administrador de ventanas compuestas

En Linux, el método de visualización exacto depende en gran medida del administrador de ventanas que se utilice . Con controladores de GPU instalados correctamente para tarjetas gráficas de Intel , ATI o nVidia , se pueden usar ciertos administradores de ventanas, llamados administradores de ventanas compuestas , para manejar cada ventana que se muestra de forma independiente. Esto se logra enviando el contenido de cada ventana a un búfer especial y luego combinándolos en una sola imagen. Mientras las ventanas individuales se procesan en su propio búfer, se les puede agregar video renderizado en este punto a través de un filtro de textura, antes de que finalmente se dibuje la ventana. XVideo se puede usar para acelerar la salida de video a través del objeto OpenGL Framebuffer o las extensiones pbuffer.

El administrador de ventanas de Metacity implementa este método. La combinación se implementa mediante una función de aceleración de hardware de gráficos 3D, como GLX_EXT_texture_from_pixmap. Entre otras cosas, esto le permite mostrar de forma independiente múltiples secuencias de video en una pantalla. Los otros gestores de composición Beryl , Compiz y Compiz Fusion hacen lo mismo. Compiz Fusion está incluido en Ubuntu Linux 7.10 y versiones posteriores. Se activa automáticamente si el sistema detecta hardware que lo soporte.

Sin embargo, en computadoras con soporte de hardware limitado para OpenGL, sin soporte de Framebuffer Object o pbuffer, como en los sistemas que usan XGL , la extensión Xv no estará disponible.

Problemas clave de color

La razón por la que los administradores de ventanas no admiten directamente la combinación es que es muy difícil determinar dónde enviar la transmisión de video, porque durante la aceleración, el contenido de la pantalla se convierte en una sola imagen. La única forma de proporcionar una salida de video es usar una superposición de hardware usando una clave de color . Después de dibujar todas las ventanas, la única información disponible sobre las ventanas son sus tamaños y coordenadas. Pero para mostrar video, también se necesita información sobre cómo y qué ventanas se superponen entre sí. Para hacer esto, los programas que reproducen video pintan sobre el área de salida con un color sólido (por ejemplo, verde). Luego, cuando se muestran todas las ventanas, las ventanas superpuestas pueden cubrir parte de la ventana del reproductor de video, pero la tarjeta de video solo necesitará escanear ciertas coordenadas de pantalla y si hay puntos verdes, entonces la transmisión de video debería mostrarse en este lugar. Se usó un método similar para la salida de video acelerada por hardware en Microsoft Windows XP (y versiones anteriores), porque su administrador de ventanas estaba tan estrechamente integrado con el sistema operativo que no era posible acelerarlo por sí mismo.

Por lo tanto, si el administrador de ventanas no es compuesto, entonces se usa una superposición de hardware con clave de color para generar video, como se describe en el párrafo anterior. Sin embargo, usar este método puede hacer que sea imposible obtener una captura de pantalla correcta con aplicaciones que usan Xvideo. Es posible que tampoco sea posible enviar video a un segundo monitor si solo se admite una superposición de hardware.

Problemas con las nuevas tarjetas gráficas

Debido al lanzamiento de DirectX 10, varias tarjetas gráficas modernas han cortado o cambiado la compatibilidad con la superposición de texturas. Esto también afectó a las tarjetas de video de la serie nVidia GeForce 8. Todas las tarjetas de video GeForce 8800, incluidas la 8800GT y la 8800GTS, ahora solo admiten una superposición de textura en el monitor principal. Como resultado, no pueden generar correctamente más de una transmisión de video mediante la aceleración de hardware, independientemente de la plataforma.

El resultado fue una mala reproducción de video en sistemas operativos que no son DirectX 10, incluidos Windows XP y Linux con XVideo. Estos cambios también perjudicaron a muchos administradores de composición, incluidos Compiz y, hasta cierto punto, Metacity .

Véase también

Enlaces