La extensión de vídeo X , a menudo abreviada como XVideo o Xv , es un mecanismo de salida de vídeo para el sistema X Window . El protocolo fue diseñado por David Carver; la especificación para la versión 2 del protocolo se escribió en julio de 1991. [ 1 ] Actualmente se utiliza principalmente para redimensionar el contenido de vídeo en el hardware del controlador de vídeo con el fin de ampliar un vídeo determinado o verlo en modo de pantalla completa. Sin XVideo, X tendría que realizar este escalado en la CPU principal. Esto requiere una cantidad considerable de potencia de procesamiento, lo que podría ralentizar o degradar la transmisión de vídeo; los controladores de vídeo están diseñados específicamente para este tipo de cálculo, por lo que pueden hacerlo de forma mucho más económica. Del mismo modo, la extensión de vídeo X puede hacer que el controlador de vídeo realice conversiones de espacio de color y cambie el contraste, el brillo y el tono de una transmisión de vídeo mostrada.
Para que esto funcione, deben darse tres circunstancias:
- El controlador de vídeo debe proporcionar las funciones requeridas.
- El software controlador del dispositivo para el controlador de vídeo y el programa servidor de visualización X deben implementar la interfaz XVideo.
- El software de reproducción de vídeo debe utilizar esta interfaz.
La mayoría de los controladores de vídeo modernos proporcionan las funciones necesarias para XVideo; esta característica se conoce como escalado de hardware y aceleración YUV o, a veces, como aceleración de hardware 2D . El servidor de visualización XFree86 X implementó XVideo desde la versión 4.0.2. Para comprobar si un servidor de visualización X dado admite XVideo, se puede usar la utilidad xdpyinfo. Para comprobar si el controlador de vídeo proporciona las funciones necesarias y si el controlador de dispositivo X implementa XVideo para alguna de ellas, se puede usar el xvinfoprograma.
Los programas de reproducción de vídeo que se ejecutan bajo el sistema X Window, como MPlayer , MythTV o xine , suelen tener una opción para habilitar la salida XVideo. Es muy recomendable activar esta opción si el hardware de vídeo de la GPU del sistema y los controladores de dispositivo son compatibles con XVideo y no se dispone de sistemas de renderizado más modernos como OpenGL y VDPAU; la mejora de velocidad es muy notable incluso en una CPU rápida .
Si bien el protocolo en sí tiene funciones para leer y escribir flujos de video desde y hacia adaptadores de video, en la práctica hoy en día solo se utilizan las funciones XvPutImagey XvShmPutImage: el programa cliente prepara repetidamente imágenes y las pasa al hardware gráfico para que sean escaladas, convertidas y mostradas.
Mostrar
Una vez que el vídeo se ha escalado y preparado para su visualización en la tarjeta gráfica, debe mostrarse. Existen varias maneras de mostrar vídeo acelerado en esta etapa. Dado que la aceleración completa implica que el controlador de vídeo se encarga de escalar, convertir y dibujar el vídeo, la técnica empleada depende totalmente de la superficie sobre la que se dibuja el vídeo.
El papel del soporte y la composición de gestores de ventanas
En X, la forma en que se dibuja el vídeo depende en gran medida del gestor de ventanas X que se utilice. Con controladores correctamente instalados y hardware de GPU compatible, como los conjuntos de chips Intel , ATI y nVidia , algunos gestores de ventanas , denominados gestores de ventanas de composición , permiten procesar las ventanas por separado y luego renderizarlas (o componerlas). Esto implica que todas las ventanas se renderizan primero en búferes de salida separados en la memoria y, posteriormente, se combinan para formar una interfaz gráfica completa. Mientras están en la memoria (de vídeo), las ventanas individuales se pueden transformar por separado, y se puede añadir vídeo acelerado en esta etapa mediante un filtro de textura, antes de que la ventana se componga y se dibuje. XVideo también se puede utilizar para acelerar la reproducción de vídeo durante el dibujo de ventanas mediante un objeto de búfer de fotogramas OpenGL o pbuffer.
Metacity , un gestor de ventanas X, utiliza la composición de esta manera. La composición también puede aprovechar las aceleraciones de las canalizaciones 3D, como GLX_EXT_texture_from_pixmap. Entre otras cosas, este proceso permite que varias salidas de vídeo compartan la misma pantalla sin interferir entre sí. Otros gestores de ventanas con composición, como Compiz, también la utilizan.
Sin embargo, en un sistema con una función de aceleración OpenGL limitada, específicamente la falta de un objeto de búfer de fotogramas OpenGL o pbuffer , el uso de un entorno OpenGL como Xgl hace imposibles las aceleraciones de hardware xv.
Las desventajas de la clave de croma
En caso de que el gestor de ventanas no admita directamente la composición, resulta más difícil aislar dónde debe renderizarse el flujo de vídeo, ya que para cuando se puede acelerar, la salida ya se ha convertido en una sola imagen. La única forma de hacerlo suele ser emplear una superposición de hardware posprocesada , utilizando la clave de croma . Una vez dibujadas todas las ventanas, la única información disponible es el tamaño y la posición del lienzo de la ventana de vídeo. Se requiere una tercera información para indicar qué partes del lienzo de la ventana de vídeo están ocultas por otras ventanas y cuáles no. Por lo tanto, el reproductor de vídeo dibuja su lienzo con un color sólido (digamos verde), y este color se convierte en una tercera dimensión improvisada. Cuando se han dibujado todas las ventanas, las que cubren el reproductor de vídeo bloquearán el color verde. Al añadir el flujo de vídeo a la salida, la tarjeta gráfica simplemente escanea las coordenadas del lienzo. Al encontrar el verde, sabe que ha encontrado una parte visible de la ventana de vídeo y solo dibuja esas partes del vídeo. Este mismo proceso era también la única opción disponible para renderizar vídeo acelerado por hardware en Microsoft Windows XP y versiones anteriores, ya que sus funciones de gestión de ventanas estaban tan profundamente integradas en el sistema operativo que acelerarlas habría sido imposible.
Si el gestor de ventanas no admite la composición, las superposiciones de hardware procesadas posteriormente mediante clave de croma, como se describe en el párrafo anterior, pueden imposibilitar la obtención de capturas de pantalla adecuadas de las aplicaciones Xvideo. También puede impedir la visualización de este tipo de reproducción en una pantalla secundaria cuando solo se permite una superposición a nivel de hardware.
Véase también
Referencias
- ↑ Especificación oficial de XVideo, versión 2.0
Enlaces externos
- Especificación oficial de la extensión de vídeo X, versión 2.0
- Novedades en la versión 2.2 de XVideo
- Páginas de manual XV
Programas de ejemplo
- testxv.c : en la mayoría de las instalaciones, se compila mediante "
gcc -o testxv testxv.c -L/usr/X11R6/lib -lX11 -lXext -lXv" - testxv2.cc : otro ejemplo en C++
- protocolos de la capa de aplicación
- Interfaces de programación de aplicaciones
- Freedesktop.org
- Extensiones de X Window