La extensión de video X , a menudo abreviada como XVideo o Xv , es un mecanismo de salida de video para el sistema X Window . El protocolo fue diseñado por David Carver; la especificación de la versión 2 del protocolo se redactó en julio de 1991. [1]En la actualidad, se utiliza principalmente para cambiar el tamaño del contenido de video en el hardware del controlador de video con el fin de ampliar un video determinado o para verlo en modo de pantalla completa. Sin XVideo, X tendría que hacer este escalado en la CPU principal. Eso requiere una cantidad considerable de potencia de procesamiento, lo que podría ralentizar o degradar el flujo de video; Los controladores de video están diseñados específicamente para este tipo de computación, por lo que pueden hacerlo de manera mucho más económica. De manera similar, la extensión de video X puede hacer que el controlador de video realice conversiones de espacio de color y cambie el contraste, el brillo y el tono de una transmisión de video mostrada.
Autor (es) original (es) | Fundación X.Org |
---|---|
Lanzamiento estable | 2.0 / 25 de julio de 1991 |
Para que esto funcione, deben unirse tres cosas:
- El controlador de video debe proporcionar las funciones necesarias.
- El software del controlador del dispositivo para el controlador de video y el programa del servidor de pantalla X deben implementar la interfaz XVideo.
- El software de reproducción de video debe hacer uso de esta interfaz.
La mayoría de los controladores de video 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 pantalla XFree86 X ha implementado XVideo desde la versión 4.0.2. Para comprobar si un servidor de visualización X dado es compatible con XVideo, se puede utilizar 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 utilizar el programa xvinfo .
Los programas de reproducción de video que se ejecutan bajo el sistema X Window, como MPlayer , MythTV o xine , generalmente tienen una opción para habilitar la salida de XVideo. Es muy recomendable activar esta opción si el hardware de video de la GPU del sistema y los controladores de dispositivo son compatibles con XVideo y los sistemas de renderizado más modernos como OpenGL y VDPAU no están disponibles; la aceleración es muy notable incluso en una CPU rápida .
Si bien el protocolo en sí tiene características para leer y escribir secuencias de video desde y hacia adaptadores de video, en la práctica hoy solo se usan las funciones XvPutImage y XvShmPutImage : el programa cliente prepara imágenes repetidamente y las pasa al hardware de gráficos para escalarlas, convertirlas y se muestra.
Monitor
Después de escalar el video y prepararlo para mostrarlo en la tarjeta de video, debe mostrarse. Hay algunas formas posibles de mostrar video acelerado en esta etapa. Dado que la aceleración total significa que el controlador de video es responsable de escalar, convertir y dibujar el video, la técnica utilizada depende completamente de en qué se dibuja el video.
El papel del soporte y la composición del administrador de ventanas
Bajo X, cómo se dibuja finalmente el video depende en gran medida del administrador de ventanas X en uso. Con los controladores instalados correctamente y el hardware de la GPU , como los conjuntos de chips Intel , ATI y nVidia compatibles , algunos administradores de ventanas , llamados administradores de ventanas de composición , permiten que las ventanas se procesen por separado y luego se procesen (o compongan). Esto implica que todas las ventanas se procesen en búferes de salida separados en la memoria primero y luego se combinen para formar una interfaz gráfica completa. Mientras están en la memoria (de video), las ventanas individuales se pueden transformar por separado, y se puede agregar video acelerado en esta etapa usando un filtro de textura, antes de componer y dibujar la ventana. XVideo también se puede usar para acelerar la reproducción de video durante el dibujo de ventanas usando un objeto OpenGL Framebuffer o pbuffer.
Metacity , un administrador de ventanas X usa la composición de esta manera. La composición también puede hacer uso de aceleraciones de tuberías 3D como GLX_EXT_texture_from_pixmap. Entre otras cosas, este proceso permite que muchas salidas de video compartan la misma pantalla sin interferir entre sí. Otros gestores de ventanas de composición , como Compiz, también utilizan la composición.
Sin embargo, en un sistema con una función de aceleración OpenGL limitada, específicamente la falta de un objeto Framebuffer OpenGL o pbuffer , el uso de un entorno OpenGL como Xgl hace que las aceleraciones de hardware xv sean imposibles.
Las desventajas de la codificación cromática
En el caso de que el administrador de ventanas no admita directamente la composición, es más difícil aislar dónde se debe renderizar la transmisión de video, porque cuando se puede acelerar, la salida ya se ha convertido en una sola imagen. La única forma de hacer esto suele ser empleando una superposición de hardware postprocesada , utilizando la incrustación de croma . Una vez que ya se han dibujado todas las ventanas, la única información que tenemos disponible es el tamaño y la posición del lienzo de la ventana de video. Se requiere un tercer dato para indicar qué partes del lienzo de la ventana de video están ocultas por otras ventanas y cuáles no. Por lo tanto, el reproductor de video dibuja su lienzo usando un color sólido (diremos verde), y este color se convierte en una tercera dimensión improvisada. Cuando se hayan dibujado todas las ventanas, las ventanas que cubren el reproductor de video bloquearán el color verde. Cuando la secuencia de video se agrega a la salida, la tarjeta gráfica puede simplemente escanear las coordenadas del lienzo. Cuando encuentra verde, sabe que ha encontrado una parte visible de la ventana de video y solo dibuja esas partes del video. Este mismo proceso también fue la única opción disponible para renderizar video acelerado por hardware bajo Microsoft Windows XP y versiones anteriores, ya que sus funciones de administración de ventanas estaban tan profundamente integradas en el sistema operativo que acelerarlas hubiera sido imposible.
Si el administrador de ventanas no admite la composición, las superposiciones de hardware postprocesadas utilizando la codificación cromática como se describe en el párrafo anterior pueden hacer que sea imposible producir capturas de pantalla adecuadas de las aplicaciones de Xvideo. También puede hacer que sea imposible ver este tipo de reproducción en una pantalla secundaria cuando solo se permite una superposición a nivel de hardware.
Ver también
Referencias
enlaces externos
- Especificación oficial de X Video Extension, versión 2.0
- Adiciones en XVideo versión 2.2
- Páginas de manual de XV
Programas de ejemplo
- testxv.c : en la mayoría de las instalaciones, es compilado por "
gcc -o testxv testxv.c -L/usr/X11R6/lib -lX11 -lXext -lXv
" - testxv2.cc : otro ejemplo en C ++