Archivo

Posts Tagged ‘Video’

Guía de Tarjetas Gráficas 2011

13 octubre 2011 2 comentarios

Todo sobre tarjetas y chips de video: memoria de video, video en equipos de escritorio, laptops, tablets y smartphones, consumo de energía, fusion, pci-express, directx y mucho más. En esta pequeña guía explicaré el funcionamiento y características básicas de los chips de video, por conveniencia se ha dividido en las siguientes secciones:

1. Introducción

2. Clasificación

3. Desempeño

3.1 Aceleración 2D y 3D

3.2 Aceleración de códecs de video

3.3 Memoria de video

4. Puertos de video

5. Tarjetas Discretas

5.1 Instalación

5.2 Consumo de Energía y Calentamiento

6. Configuración en Equipos PC

6.1 APIs

6.2 Drivers

6.3 Reproducción de video

Introducción

Una tarjeta de video es en si mismo una pequeña computadora, capaz de procesar, almacenar y mover información de tipo gráfico, Es en la mayoría de los casos el componente más importante después del microprocesador, la podemos considerar como el 2o cerebro que existe dentro de nuestra computadora.

Cuando adquirimos un equipo de cómputo nuevo o una tarjeta de video es importante tener en mente el uso que le vamos a dar. Algunas aplicaciones como:

  • Reproducción de Videos y Películas en HD
  • Edición de Videos
  • Diseño y Animación 3D
  • Aplicaciones de Ingenieria o Arquitectura
  • Videojuegos
  • ….

Pueden ser procesados de forma más rápida y eficientemente con ayuda de la tarjeta de video.

Si tenemos en mente usar algún programa de software en particular, es importante revisar los requerimientos mínimos de sistema, algunos programas simplemente no funcionarán si no contamos con una tarjeta de video adecuada. A lo largo de esta guia veremos como elegir la tarjeta más adecuada a nuestras necesidades.

Clasificación

Hay tres tipos de tarjetas de video que encontramos comunmente:

  • Tarjetas de Video Discretas, son tarjetas como la que se muestra en la fotografía de abajo, se ecuentran en equipos de escritorio, pueden ser adquiridas o actualizadas, cuentan con su propia memoria de video conocida como memoria dedicada, y en general son rápidas, pero también más costosas.

  • Tarjetas de Video Integradas en la Tarjeta Madre (IGP) hoy en dia el tipo de tarjeta de video más común, como su nombre lo indica son chips integrados que econtramos en la placa principal del equipo (generalmente en el chipset o puente norte), vienen soldados de fábrica y no se pueden cambiar.  Las encontramos en tablets, netbooks, laptops, y computadoras de escritorio. En estas últimas existe la posibilidad de agregar otra tarjeta de video, sin embargo, solo una de ellas funcionará a la vez. No son tan rápidas como las discretas pero son más baratas. La mayoría de estas no cuentan con memoria propia y utilizan parte de la memoria RAM del sistema para funcionar, este espacio se le conoce como memoria compartida el cual reduce la memoria disponible para el sistema operativo y los programas, aunque en general casi siempre es posible agregar físicamente más memoria RAM al sistema.

  • Tarjetas de Video Integradas en el Procesador, cada dia es más común encontrar computadoras donde la tarjeta de video y el procesador estan integrados en un solo chip. Algunos ejemplos son: la linea de procesadores Fusion de AMD, los procesadores Intel con HD Graphics y en general casi todos los procesadores de tablets como el Nvidia Tegra2. En algunos casos estas pueden ser más rápidas que las integradas en el tarjeta madre (como los AMD Fusion A8-3600 – 3800), pero más lentos que las discretas. Tampoco cuentan con memoria propia y utilizan parte de la memoria del sistema para funcionar. Una de sus principales ventajas es la gran velocidad de comunicación con el procesador y la memoria RAM. Es posible que en algunos años este tipo de tarjetas ofrezcan el mismo desempeño que las discretas.

Sin importar el tipo de tarjeta todas ellas cuentan con un procesador llamado Unidad de Procesamiento Gráfico o GPU (por sus siglas en inglés), el cual define las capacidades de video del equipo. Son identificados por el nombre del fabricante, marca y modelo. Por ejemplo: “Nvidia GeForce GT560”, donde el fabricante es Nvidia, la marca GeForce y el modelo GT560. Convencionalmente la numeración del modelo representa la familia: serie 500 y el desempeño: 60, aunque esta regla muchas veces no se cumple y hay que tener cuidado.

Desempeño

Aceleración 2D y 3D

La aceleración 2D, se refiere a la aceleración de los elementos en 2 dimensiones que usamos todos los días en nuestro escritorio: botones, menús, ventanas, el ratón, … También es útil para manipular fotografías y realizar edición de imagenes en 2D. La mayoría de las tarjetas de video nuevas y no tan nuevas cuentan con la aceleración 2D necesaria y se puede considerar como un factor de poca relevancia al elegir una tarjeta de video.

La aceleración 3D, se refiere a la aceleración de objetos tridimensionales que son utilizados comunmente en programas de edición, animación 3D, videojuegos, programas de ingeniería, arquitectura, etc.

Cada uno de estos programas tiene una  demanda diferente de aceleración 3D y de memoria de video.

En el software de edición y animación 3D esta demanda dependerá del programa que utilicemos y de los elementos que trabajemos, entre más información sea manipulada (texturas, poligonos, efectos especiales), mayor será también la demanda de recursos a la tarjeta de video. Y será necesario una tarjeta con mayores capacidades.

En el caso de los videojuegos los títulos más recientes son los más demandantes. Cuando un videojuego es demasiado pesado para nuestra tarjeta gráfica, este se congelará, se verá muy lento o de forma pausada, en algunos casos haciendo imposible jugarlo. Este efecto se debe a que el número de cuadros (o imágenes) por segundo que puede procesar nuestro GPU es muy bajo. Por esta razón muchos videojuegos incluyen opciones para mejorar la velocidad aunque esto signifique sacrificar elementos visuales. La mayoría de los videojuegos se pueden jugar perfectamente a más de 45 cuadros por segundo o fps (de sus siglas inglés), algunos juegos de estrategia o de movientos en 2D se pueden jugar a 30 fps o menos, mientras que algunos de primera persona requieren 60 fps para obtener movimientos rápidos y fluidos. Solo como referencia, recordemos que la mayoría de las peliculas se proyectan a 24 o 25 fps. Veamos el siguiente ejemplo:

Juego: Lost Planet 2, Calidad Baja, resolución: 1024×768, Procesador: Intel i5 2500

Tarjeta gráfica Cuadros por segundo (fps)
AMD Radeon HD 5570 69.8
AMD Radeon HD 5450 24.9

En esta pequeña comparación podemos ver como el mismo juego con la misma configuración gráfica y equipo de cómputo (procesador y RAM) se comporta de forma diferente dependiendo del GPU. A pesar de que la configuración de video es casi la mínima posible, no es posible hacer que el juego Lost Planet 2 se vea de forma fluida usando un Radeon HD5450, pero si es posible jugarlo perfectamente con el Radeon HD5570 que es más costoso. Este mismo comportamiento lo encontramos en smartphones y tablets dependiendo del chip de video.

Es difícil saber como se comportará un programa o algún videojuego con cierta tarjeta gráfica, la mejor opción es revisar primero las reseñas en Internet antes de adquirir cualquier cosa. Algunos sitios muy recomendables son los siguientes (en inglés):

También puedes encontrar más reseñas por cada modelo de GPU en GPUReview.

Para tablets y smartphones te recomiendo (en inglés):

Aceleración de codecs de video

Los codec’s de video son métodos en hardware o software que permiten comprimir y descomprimir videos digitales; por ejemplo:  mpeg-2, H.264, VC-1, VP8, etc. En la actualidad todos los videos que usamos día con día  se encuentran comprimidos en algún formato y para visualizarlos se requiere que el archivo pase por un proceso de descompresión. En muchos casos este proceso puede ser sumamente demandante y es realizado en varias etapas.

Las tarjetas gráficas nuevas cuentan con aceleración de codecs de video, esto permite que algunas o todas las etapas de la descompresión de ciertos codecs sean procesadas por el GPU. Logrando ver videos más fluidos y con mejor calidad de imagen, además de reducir el consumo de energía e incrementar la duración de la batería en equipos móbiles.

Solamente los GPUs más nuevos cuentan con aceleración completa de codecs de video. Las siguientes tecnologías permiten tener aceleración de codecs de video:

Equipos PC (escritorio, laptops y netbooks):

Tecnologías como PureVideo o Unified Video Decoder han ido evolucionando, cada nueva versión ofrece grandes mejoras con respecto a la anterior.

Algunos chips de video en tablets y smartphones  que soportan reproducción HD en 1080p son:

  • Imagination Technologies PowerVR SGX
  • ARM Mali 400 MP
  • Qualcomm Adreno 220
  • Broadcom CrystalHD (también netbooks)

La aceleración de codecs de video debe ser un factor importante a tomar en cuenta si deseas reproducir películas Blu-Ray  o cualquier otro formato de alta definición.

Memoria de video

La tarjeta con más memoria no siempre es la más rápida. Si el GPU tiene pocas capacidades, será poco relevante que tengamos varios gigabytes en memoria de video. La mayoría de los fabricantes proporcionan la cantidad y tipo de memoria conveniente para cada GPU. En el caso de la memoria compartida pasa algo similar, compartir grandes cantidades de memoria RAM del sistema no hará nuestra tarjeta mucho más rápida, es probable que la diferencia no sea notable. Si realmente requieres de más aceleración, necesitarás otro GPU.

Algunos GPUs soportan varios tipos de memoria dedicada y los podemos encontrar en todo una gama diversa de productos.

Los tipos de memoria que podemos encontrar en una tarjeta de video (y su fecha de aparición en el mercado) son los siguientes:

  • DDR2 (2003)
  • DDR3 (2007)
  • GDDR3 (2003)
  • GDDR4 (2007)
  • GDDR5 (2008)

La letra G, al principio de los últimos tres, se refiere a Graphics, y son tipos de memoria especialmente diseñados para tarjetas de video, los dos primeros son los tipos de memoria comerciales que ya conocemos.

El desempeño de la memoria de video se puede estimar conociendo los siguientes parametros:

cantidad * tipo * velocidad * ancho de bus

La velocidad se indica en Mhz y el ancho de bus en bits, puede ser de 64 a 512 bits dependiendo del GPU. Una memoria muy grande y rápida podría estar limitada por un bus de datos pequeño, creando un cuello de botella.

Puertos de video

Existen varios puertos de video que permiten conectar la tarjeta gráfica al monitor o a la TV. Aquí una lista de los más comunes:

VGA (1987)
DVI (1999)
s-video (1987)
s-video (1987)

HDMI (2003)

HDMI tipo C (mini 2006)

DisplayPort (2008)

Mini Display Port (2008)

Si deseas tener gran conectividad entre tus dispositivos deberás revisar que cuenten con los puertos de video adecuados. Algunas recomendaciones son:

  • Asegurate que tu equipo cuente con en puerto HDMI o mini-HDMI (tablets y smartphones) si deseas conectarlo a la TV. Oh bien revisa que tu TV tenga las entradas VGA o DVI que se encuentra comunmente en equipos PC.
  • No todas las tarjetas de video soportan varios monitores. La mayoría  soporta 2, si necesitas 3 o más deberás tener cuidado al elegir tu compra.

Tarjetas Discretas

Instalación

Todas las tarjetas de video discretas se conectan físicamente al equipo mediante alguna ranura ya sea PCI, AGP, o PCI-Express, es importante revisar el tipo de ranura de video que soporta nuestra tarjeta madre (motherboard) pues no todas son compatibles entre sí, y si no tenemos cuidado podríamos terminar comprando una tarjeta que no funciona con nuestro equipo. Los tipos de ranuras son las siguientes:

Nombre Velocidad Fecha de aparición
PCI 133MB/s 1993
AGP 1x (1.0) 266MB/s 1997
AGP 2x (1.0) 533MB/s 1997
AGP 4x (2.0) 1066MB/s 2000
AGP 8x (3.0) 2133MB/s 2000
PCI-Express 8x (1.0) 2 GB/s 2004
PCI-Express 16x (1.0) 4 GB/s 2004
PCI-Express 8x (2.0) 4 GB/s 2007
PCI-Express 16x (2.0) 8 GB/s 2007
PCI-Express 8x (3.0) 8 GB/s 2010
PCI-Express 16x (3.0) 16 GB/s 2010
PCI-Express 16x

Hoy en día prácticamente todas las tarjetas de video nuevas son PCI-Express. Las tarjetas de tipo PCI, PCI-Expres y AGP no son compatibles entre sí, pero versiones distintas del mismo tipo si son compatibles, por ejemplo el PCI-Express 1.0 es compatible con el PCI-Express 2.0.

Las fuentes de alimentación más comunes para PC son de 350-450 Watts pero para ciertas tarjetas de video podríamos requerir fuentes de 600 o hasta 1000W!!. Si la fuente no soporta el consumo es muy posible que se queme. Las tarjetas de mayor consumo generalmente requieren de conectores especiales en la fuente como los siguientes:

Si deseas conectar cuatro monitores, jugar uno de los juegos con los gráficos más impresionantes en muy alta definición, o simular la colisión de dos galaxias,  posiblemente desees colocar 2 o más tarjetas de video a tu PC.

Para lograr esto hoy en día solo existen dos tecnologías disponibles:

CrossFire de ATI ó

Scalable Link Interface (SLI) de Nvidia

Actualmente solo es posible conectar en paralelo tarjetas de video del mismo fabricante y requieres de una tarjeta madre que soporte alguna de estas configuraciones.

Consumo de Energía y Calentamiento

El consumo de energía de una tarjeta es importante tanto para la elección de la fuente como para el pago del servicio eléctrico. Aquí una lista de valores a tomar en cuenta:

  • Consumo Máximo de Energía. Ocurre cuando la tarjeta funciona a su máxima capacidad, generalmente mientras ejecutamos aplicaciones de visualización en 3D.
  • Consumo Mínimo de Energía. Ocurre cuando realizamos tareas cotidianas como navegar en internet, editar documentos, o simplemente cuando el equipo esta encendido pero no hay ninguna aplicacion en ejecución.
  • TDP. (Thermal Design Power) Es un parametro que nos indica el calentamiento máximo de la tarjeta, nuestro gabinete deberá tener la disipación termica necesaria para que no se caliente demasiado. En general los gabinetes más grandes son mejor ventilados y ofrecen mayor disipación, en todos ellos siempre es recomendable tener los ventiladores y disipadores adecuados.

Cuando pensamos en el gasto de electricidad, para la mayoría de casos el consumo mínimo de energía será el factor más importante, pues la mayor parte del tiempo nuestro equipo trabaja a su capacidad mínima o se encuentra en estado de espera (idle). Estos valores pueden variar mucho dependiendo de la tarjeta. Por ejemplo, de acuerdo al sitio X-bit labs tenemos el consumo de energía de las siguientes tarjetas:

Aunque estas dos tarjetas tienen un desempeño muy similar su consumo de energía es muy diferente. Es posible apreciar como la 9600GT consume más de 20W apesar de no realizar tarea alguna (idle), mientras que la GT240 ofrece un consumo de menos de 20W en el uso diario (idle y 2D), excepto en aplicaciones 3D.

Es recomendable revisar sitios de Internet como X-bit labs donde se realizan reseñas detalladas del consumo energético. Al 28 de Febrero de 2011 esta es la lista de tarjetas y su consumo energético: Lista.

Configuración en Equipos PC

APIs

Las APIs o Interfaces de Programación de Aplicaciones, sirven a los desarrolladores de software para tomar ventaja del poder de procesamiento de las GPUs. En algunos programas de software encontramos dentro de la documentación, el soporte de algún API  (OpenGL o DirectX) como requisito minimo de sistema, esto significa que si nuestro GPU no soporta el API indicado y en una versión igual o mayor simplemente no funcionará. En otros casos el soporte solo es recomendado, lo cual significa que el software funcionara más lento o algunas opciones estarán deshabilitadas. Por ejemplo, si tienes un software o videjuego que requiere DirectX 10, pero tu tarjeta solo soporta DirectX 9, es posible que la aplicación no corra, o no sea acelerada al 100% obteniendo un desempeño pobre.

Los APIs utilizados actualmente son:

Nombre Versión más reciente Descripción
Direct3D 11 Parte del API de Microsoft DirectX, orientada a la aceleración de gráficos en 3D, utilizada principalmente en aplicaciones para Windows
OpenGL 4.2 API del grupo Khronos para aceleración 2D y 3D, utilizada en aplicaciones de diseño, animación, videojuegos, …  para Windows, Linux, Mac, smartphones, tables y otros
OpenCL 1.1 API del grupo Khronos para aceleración de software general
DirectX Video Acceleration 2.0 Parte del API de Microsoft DirectX para la aceleración de codecs de video en Windows
Video Acceleration API (VA-API)
1.0.12 API de sistemas Unix para la aceleración de codecs de video
VDPAU 0.4 API de sistemas Unix para la aceleración de codecs de video, impulsado por Nvidia
Drivers

Los drivers o controladores son pequeños elementos de software que permiten que tu sistema operativo se comunique con algún dispositivo de hardware y pueda utilizarlo. Es necesario un controlador por cada componente de hardware de tu equipo.

En las tarjetas de video, los drivers juegan un papel muy importante pues desempeñan las siguientes funciones:

  • Comunicación entre el Sistema Operativo y el Hardware
  • Soporte de APIs (2D, 3D y codecs de video)
  • Traducción y optimización en tiempo real del uso de APIs
  • Administración de Memoria de Video
  • Administración de energía

En ocasiones los drivers pueden contener errores que pueden manifestarse como: desempeño lento, calentamiento de la tarjeta, visualización corrupta y/o elementos no visibles, entre muchos otros… Algunos drivers defectuosos pueden incluso provocar que tu tarjeta de video se queme. Los fabricantes de hardware frecuentemente lanzan nuevas version de drivers y es bueno estar al pendiendiente de las mejoras y errores detectados en estos. Para equipos PC puedes encontrar drivers actualizados en:

Nvidia

ATI Technologies

Reproducción de video

La reproducción de video utilizando la aceleración de codecs puede reducir dramaticamente el uso del procesador de tu computadora con esto puedes obtener los siguientes beneficios: reducir el consumo de energia, aumentar la duración de la bateria, mejorar la calidad del video y liberar recursos para otras aplicaciones.

Aprovechar la aceleración de codecs de video todavía es una tarea complicada, en algunos casos, requieres una combinación particular de: sistema operativo, driver, reproductor de video y archivo de video. Esperemos que esta situación mejore en el futuro, conforme esta tecnología sea más común.

¿Como conseguir la aceleración de codecs?

1. Asegurate que tu hardware soporte aceleración de codecs:

Nvidia PureVideo

AMD ATI UVD

Intel Clear Video HD

2. Verifica que tu driver de video soporte aceleracion de codecs:

En sistemas Windows: Practicamente todos, excepto algunas versiones con errores, puedes usar el siguiente programa para verficiar el soporte de codecs: DXVA Checker

En sistema Unix: Para Nvidia necesitas el driver propietario nvidia y la libreria vdpau-video. Para ATI necesitas el driver propietario catalyst(todavia tiene problemas). Para Intel el driver xf86-video-intel debe estar correctamente instalado. Puedes verificar el soporte de codecs usando el comando vainfo en la consola.

3. Consigue un programa de reproducción de video que soporte aceleración de codecs:

En sistemas Windows: Conozco dos que son gratuitos:

En sistemas Unix: practicamente todos.

4. Configura correctamente tu programa de reproducción para activar el soporte:

En sistemas Windows, (para los programas anteriores):

En sistemas Unix: dependiendo del programa, deberás seleccionar el módulo de salida va-api (aunque vdpau es preferible para sistemas con Nvidia)

5. Si aún no logras obtener la aceleración, revisa que la combinación codec y resolución de tu archivo de video sean soportados por el driver usando VXVAChecker(windows) o vainfo(Unix).

Espero esta guía te haya sido de utilidad, y como siempre  tus comentarios, mejoras o correcciones son bienvenidas

Anuncios

El escritorio multimedia en Linux – Drivers de Video

20 mayo 2010 Los comentarios están cerrados

En los últimos años, el ecosistema Linux ha abarcado rápidamente equipos personales como PCs, netbook’s, smartphones, etc. Estas tecnologías abiertas han permitido a empresas como Canonical y Google ofrecer excelentes productos como Ubuntu 10.04 y Android respectivamente. Pero ¿Hasta donde ha llegado el escritorio Linux? ¿Ya es posible tener una experiencia multimedia completa? ¿Qué más falta por hacer?.

Durante algún tiempo Linux fue desarrollado principalmente pensando en grandes equipos de cómputo como servidores y supercomputadoras, además de pequeños sistemas embebidos como routers, electrodomésticos, etc. Y aunque hoy en día Linux domina todos estos mercados, existe un componente que no es necesario para ninguna de estas aplicaciones y que durante mucho tiempo no fue relevante para Linux: el entorno gráfico.

Cuando usas una computadora personal o un teléfono celular, la pantalla gráfica es uno de los componentes más importantes para obtener información de tu equipo. Las interfaces gráficas actuales son sumamente amigables, utilizando una serie de elementos como botones, menús, ventanas etc., así como la presencia de imágenes, audio, video y entornos 3D interactivos, han enriquecido enormemente la funcionalidad de estos sistemas.

Durante muchos años, el entorno gráfico y el sistema de audio han sido los puntos débiles de los sistemas Linux. Anteriormente era común ver a los usuarios correr despavoridos al ver que el sistema fallaba al iniciar el modo gráfico, el audio no se escuchaba, o su laptop se calentaba demasiado. Y aunque hoy en día estos problemas se han logrado resolver en su mayoría, aún se llegan a presentar.

Estos problemas están asociados con tres componentes: los drivers de video, el servidor X y el sistema de audio.

Drivers de video

Linux vs. drivers propietarios

La naturaleza abierta del kernel de Linux (GPL) – la cual lo ha impulsado enormemente –  solo permite que drivers de software libre sean integrados y distribuidos junto con éste. Esto significa que aquellos que son propietarios no pueden ser incluidos en las distribuciones de Linux y deben ser instalados y configurados por el usuario final. Afortunadamente, algunas distribuciones como Ubuntu ofrecen una forma fácil y sencilla de instalarlos.

Actualmente Nvidia, ATI (AMD), S3 (VIA) (e Intel en ocasiones) ofrecen drivers propietarios para Linux, mientras algunas de estas empresas ofrecen también drivers open-source, Nvidia y S3 únicamente proveen drivers propietarios. Finalmente estos drivers en ocasiones no pueden aprovechar los últimos avances que se dan en el kernel (como KMS) o en el servidor X, debido a su naturaleza propietaria.

Drivers propietarios

Debido a que muy pocos clientes usaban Linux en sistemas de escritorio, los fabricantes de tarjetas de video ofrecían un soporte muy pobre (o ninguno) de drivers para Linux, al mismo tiempo que no proveían información del hardware o de sus drivers que permitiera a los programadores arreglar o desarrollar drivers alternativos. En ocasiones usar el driver propietario era la única opción  y muy frecuentemente se encontraban en un estado muy pobre. Para los dueños de estas tarjetas de video usar Linux simplemente no era una opción.

Afortunadamente en los últimos años el soporte de drivers propietarios a mejorado considerablemente, aquellos provistos por Nvidia son considerablemente buenos, ofreciendo un gran soporte para lo último en tecnología de gráficos en Linux. El soporte de ATI ha ido mejorando lentamente, aunque aún falta un buen camino por recorrer. En general los drivers propietarios en Linux son casi tan buenos como los de otros sistemas operativos.

Drivers de código abierto.

El kernel de Linux no fué diseñado originalmente para trabajar con entornos gráficos avanzados, sin embargo ha ido evolucionando poco a poco en esta dirección, algunos de los eventos más importantes han sido:

  • Diciembre 2008, con la versión 2.6.28 comienza una lenta integración de componentes para ofrecer un mejor soporte de gráficos (KMS, GEM), los chips de video de Intel son los primeros en tomar ventaja de estas tecnologías.
  • Diciembre 2008, ATI comienza la liberación de documentación que permitirá el desarrollo de drivers open-source con aceleración 2D y 3D para sus tarjetas de video.
  • Septiembre 2009, en el kernel 2.6.31 se integra soporte inicial para algunos chips de video de ATI.
  • Diciembre 2009, kernel 2.6.32, se agrega soporte de aceleración 2D y 3D para todos los chips de ATI.
  • Febrero 2010, con el kernel 2.6.33 se integran drivers open-source con soporte 2D y 3D para tarjetas de video Nvidia desarrollados por el proyecto nouveau.

Hoy en día Intel y ATI son los mayores fabricantes de chips de video que ofrecen documentación sobre estos, permitiendo el rápido desarrollo de drivers open-source. Actualmente el kernel de Linux integra drivers para la mayoría de las tarjetas de video disponibles en el mercado, en su mayoría ofreciendo soporte de aceleración 2D y 3D.

Apesar de estos grandes avances, los drivers de código abierto aún no pueden competir con drivers propietarios en algunas áreas como aceleración 3D y aceleración de codecs de video. Aún carecen de soporte de APIs relativamente nuevos como OpenGL 3.0, 3.2 o 4.0. Pero tal vez la mayor limitación actual en drivers open-source, sea el alto consumo de energía que presentan algunos de estos, afectando principalmente equipos portátiles, en muchos casos por la falta de una administración de energía o la falta de aceleración de códecs de video. Se espera que la administración de energía de los chips de Intel y ATI mejore en las versiones 2.6.34 y 2.6.35 del kernel.

Gallium3D y el futuro de los drivers de video en Linux

Las tarjetas de video actuales ofrecen una gran cantidad de funcionalidades:

  • Aceleración 2D (EXA, Textured Xv)
  • Aceleración 3D (OpenGL)
  • Aceleración general (OpenCL)
  • Aceleración de códecs de video (XvMC, VDPAU, VA-API)
  • Administración de consumo de energía (ACPI,..)

Desarrollar un driver por cada chip de video que cubra todas estas necesidades/especificaciones es realmente un arduo trabajo, incluso los fabricantes de hardware mantienen un driver común para toda una familia de chips. Esta gran cantidad de trabajo también se ve reflejada en el  retraso de los drivers open-source. Sería muy bueno encontrar una forma de hacer más eficiente el trabajo para cada uno de los equipos que desarrollan drivers para el kernel.

Gallium3D es la mayor apuesta de la comunidad de software libre para lograr drivers open-source competitivos. Uno de sus principales objetivos es permitir que programadores de drivers compartan la mayor cantidad de software posible, reduciendo la necesitdad de programar una y otra vez la misma funcionalidad por cada driver. Pero ¿Cómo funciona Gallium3D? La arquitectura base se puede ver en el siguiente diagrama:

Básicamente se puede pensar en Gallium3D como una capa intermedia entre el API y el driver de video. Cada implementación de un API sobre Gallium3D es llamada state tracker, Los state trackers pueden ser APIs 3D como OpenGL o incluso Direct3D, pero también es posible tener otro tipo de API’s por ejemplo API’s de aceleración 2D como OpenVG o aceleración GPGPU como OpenCL. Una vez que el state tracker esta listo, todos los drivers desarrollados para Gallium3D (que cubran ciertos requisitos) pueden tomar ventaja de este. De esta forma se puede reducir el tiempo de programación para cada driver, acelerando el desarrollo de los mismos.

La versión 7.5 de Mesa3D (Julio 2009) fué la primera en incluir Gallium3D, en Mayo 2009 se incluyó el state tracker OpenVG, permitiendo aceleración de SVG y Flash. Actualmente programadores de drivers de Intel, ATI y nouveau están enfocando sus esfuerzos en Gallium3D. Se han hecho diversas propuestas para la creacion de state trackers en Gallium3d, incluyendo OpenGL 3.2 y Cairo (usado en gtk+).

Los drivers de video juegan un papel muy importante en equipos de computo personal, tanto en tareas comunes como navegar en Internet, editar textos o ver videos, así como en el uso de aplicaciones avanzadas para edición, animación, ingenieria, videojuegos, etc. Linux no podrá competir con otros sistemas operativos en este mercado sino cuenta con los drivers de video adecuados.

Puedes seguir los avances de Gallium3D y los drivers de video en Linux en los siguientes links:

GalliumStatus

Radeon Feature Matrix (drivers para chips ATI)

Nouveau Feature Matrix (drivers para chips Nvidia)

En la siguiente sección revisaré el Servidor X y el sistema de sonido en Linux.

Los riesgos de usar H.264 en YouTube y que puedes hacer al respecto

1 febrero 2010 Los comentarios están cerrados

(ver actualizaciones al final del texto)

Muchos de nosotros no estamos conscientes de toda la tecnología que hay detrás de Internet. Ni de como podemos utilizarla sin que nos cueste ni un solo centavo. Entre estas tenemos:

  • HTML, que le da estructura y contenido a la página
  • CSS, le da presentación a una página
  • JavaScript, permite que la página sea interactiva (menús, botones, animaciones, ..)
  • fuentes, las letras que se usan para los textos
  • Formatos de Imágenes (jpeg, png,…) que comprimen la información de una imagen para poder tener un uso eficiente de la red
  • … y muchas otras

Esto ha reducido las barreras para poder entrar y participar, creando un tablero de juego equilibrado en el que todos tienen las mismas oportunidades. Este es el corazón de Internet y la razón por la que ha crecido de una forma tan sorprendente. Millones de páginas y sitios en la red son creados todos los días gracias a esto.

¿Que hubiera pasado con el Internet si tuvieras que comprar un navegador de Internet? o ¿Pagar peaje por cada página que visitas? o ¿Pagar miles de dolares por la tecnología para crear un sitio o usar el correo electrónico?

Bueno algunas organizaciones ni siquiera existirían:

“La web es innegablemente mejor después de que Mozilla entro al mercado de navegadores, y habría sido imposible para nosotros hacer esto si hubieran existido pagos multi-millonarios en dolares por licencias para el manejo de HTML, CSS, JavaScript, o alguna otra.

Mike Shaver, vicepresidente de ingeniería de Mozilla

A pesar de todo, hoy en día existen tecnologías en Internet que no son del todo gratuitas o libres. Un gran ejemplo de esto es el reproductor de Flash. Hasta algunos años el reproductor de Flash era la única forma de poner vídeos en una página de Internet. Al mismo tiempo el video en Internet no se consideraba como algo relevante debido a su poca popularidad y el limitado acceso a la banda ancha. Con la llegada de sitios como YouTube o Vimeo su uso creció de forma sorprende, y ahora forma parte de la infraestructura de Internet. Con los años las críticas en contra de esta pieza de tecnología propietaria se han hecho más y más fuertes. Aunque el reproductor de flash es gratuito para los usuarios, los diseñadores de páginas deben pagar licencias, la tecnología impone muchas limitaciones en su uso, y muchos problemas técnicos no pueden ser resueltos; más que por la empresa que controla esta tecnología. Muchos problemas actuales de seguridad con hackers y virus se asocian al flash.

Finalmente hoy en día existe una alternativa de tecnología libre y gratuita que hace “casi” lo mismo: el HTML5. Y ha sido muy bien recibido, sitios como YouTube y Vimeo ya se encuentran en fase de pruebas para dar soporte a este nuevo estándar.

Pero esto no ha resuelto todos los problemas aún, junto con flash se “escondía” otro problema: los códecs de video. Estos codec’s son la tecnología que se usa para comprimir, descomprimir y transmitir el contenido de un video por la red. Y el HTML5 necesita un codec, de la misma forma que flash.

Ahora nos enfrentamos a un nuevo riesgo: Los sitios de YouTube y Vimeo han utilizado junto con flash el codec H.264 para almacenar y transmitir sus videos durante ya algún tiempo. Y cuando estos mismos sitios deciden iniciar pruebas con HTML5 deciden seguir usando el mismo codec H.264. Pero esto podría traer consecuencias a largo plazo.

Las patentes de la tecnología H.264, que expiran hasta el 2028, pertenecen a la compañía MPEG-LA, quien cobra licencias, no solo por el hardware o software para crear y reproducir el codec, sino también por transmitirlo o ponerlo en un sitio web. Los costos se elevan hasta $ 5 millones de dólares por distribuir archivos en este formato. Y las licencias cambian cada año, lo que significa que no se tiene una certidumbre sobre los costos a largo plazo de esta tecnología. Como muchas tecnologías propietarias de este tipo, comenzó siendo gratis y ahora se espera un nuevo modelo de cobro para el 2011 y no se tiene una certeza en como puede afectar a los usuarios finales.

Mas aún, el gran impacto que tiene hoy en día Internet en todo el mundo, la creciente popularidad y demanda de video en la web, junto con los efectos de red, que se sabe tienen este tipo de tecnologías. Nos dice que en un futuro cercano se establecerá un estándar queramos o no. De la misma forma que el DVD, el mp3 o el Blue-Ray se han establecido como estándares en otros ámbitos. Por lo tanto si YouTube y Vimeo siguen impulsando el uso de H.264, este podría establecerse como el nuevo estándar de video, creando un monopolio efectivo para formatos de video, donde la tecnología esta en manos de una sola compañía y cuyos costos de licenciamiento a largo plazo son impredecibles. Por si fuera poco esta misma tecnología es la misma que se usa en los discos Blue-Ray impulsando un monopolio en posiblemente todos los ámbitos dentro y fuera del Internet.

Y ¿Qué significa todo esto para nosotros los consumidores? Esto se traduce en mayores costos en los servicios de Internet, mayores costos en los equipos de hardware como son: cómputo, reproductores portátiles de video, telefonos celulares,… , menores opciones para los consumidores, pues al elevarse los costos solo las grandes corporaciones podrán comprar su entrada al mercado, los pequeños fabricantes, o sitios de Internet quedarán fuera. Muchas empresas pequeñas no podrán ajustarse a los cambios de licenciamiento y tendrán que cerrar.

¿Especulaciones? Puede ser, pero esto ya ha ocurrido antes: DVD, Blue-Ray, MP3, GIF,…

¿Cuál es la alternativa? Existen varios formatos y codecs de video que son tecnologías 100% libre y gratuita como son Dirac o Theora. Actualmente navegadores de Internet como: Firefox, Chrome y Opera ya soportan el códec Theora junto con HTML5 y debido a que la tecnología no tiene ningún costo o restricción puede ser integrada o incluida con cualquier producto sin tener que pagar ningún tipo de licencia. Ya que estas tecnologías son abiertas, cualquiera puede participar para corregirlas o mejorarlas. El establecer Theora o algún codec de tecnología libre como el estándar de Internet traería enormes beneficios para todos nosotros, de la misma forma que lo hacen hoy en día  HTML o  Javascript.

¿Qué puedo hacer para apoyar un estándar de video libre?

[Gracias a todos por participar, ya no es necesario votar, ver actualizaciones más adelante]

Puedes votar en http://productideas.appspot.com/#9/e=3d60a&t=theora para que YouTube soporte la tecnología de Theora en su sitio.

Puedes apoyar a la fundación Xiph para que continúe desarrollando la tecnología Theora

También puedes votar para la liberación de la tecnología On2 http://productideas.appspot.com/#9/e=3d60a&t=on2 recientemente adquirida por Google.

Oh votar por cualquier otra tecnología libre y gratuita para HTML5: http://productideas.appspot.com/#9/e=3d60a&t=html5

ACTUALIZACIÓN (17/04/10):

Gracias a la enorme participación y a la preocupación de los programadores y usuarios en general sobre este tema, Google a tomado algunas decisiones que pueden beneficiarnos a todos:

Google ha comenzado a financiar el desarrollo de Theorarm, un decodificador de Theora para procesadores ARM, esto también ha permitido poner este software bajo una licencia más permisiva BSD.

Se especula que Google podría anunciar pronto la liberación de los codecs VP8 bajo una licencia open-source.

ACTUALIZACIÓN (20/05/10):

Finalmente Google ha liberado bajo una  licencia BSD modificada los codecs VP8 junto con el contenedor WebM basado en la tecnlogía de Matroska (mkv) y que utilizará el codec vorbis para audio. Más información del proyecto del contenedor open-source WebM aquí

Videos HD en Linux?

31 diciembre 2009 Los comentarios están cerrados

Ver videos de alta definición en la PC ya es hoy en día una tarea muy común, ya sea en Blue-Ray o en algún sitio en la red. Desafortunadamente la aceleración de video en Linux sigue siendo un reto. La mayoría de los fabricantes de hardware no ofrecen el soporte que nos gustaría ver.

La aceleración de codecs de video como H.264, VC-1 o MPEG2 en resoluciones de alta definición como 720p o 1080p, puede ser una tarea ardua para los microprocesadores actuales. En general sin una tarjeta gráfica que ofrezca este tipo de aceleración, el procesador (o alguno de sus núcleos) puede llegar al 100% de uso, gastando valiosos recursos de cómputo y energía eléctrica. Y si no se cuenta con un procesador lo suficientemente poderoso, seguramente observaremos frecuentes saltos en el audio y video.

La mejor opción es contar con una tarjeta gráfica que soporte este tipo de aceleración, reduciendo el consumo de energía (alargando la batería en equipos móviles) y permitiendo realizar otras tareas de forma simultanea. También cabe mencionar que este tipo de aceleración es “independiente” de la aceleración 2D y 3D que soporte el driver y la tarjeta.

Una vez dicho esto, revisemos el soporte que ofrecen los drivers actuales por fabricante, en el caso de que soporte aceleración, se indicará el API utilizada y el hardware requerido:

Fabricante Driver Aceleración Completa API Hardware Requerido
ATI catalyst (propietario) SI VA-API > UVD 2

ati (open-source) NO


Nvidia nvidia (propietario) SI VDPAU, VA-API > PureVideo 2

noveau (open-source) NO

Intel poulson (propietario) SI VA-API Solo GMA 500

intel (open-source) NO


Broadcom crystalhd (open-source?) SI libcrystalhd Solo BCM970012

Recientemente Broadcom lanzó al mercado su acelerador BCM970012, que ya cuenta con soporte del reproductor multimedia XBMC y cuenta con un driver open-source. Este ultimo aún no ha sido integrado al código del kernel de Linux y cuenta con un firmware de 2.7MB. Una vez integrado podría significar un gran avance en la aceleración de video en Linux, siendo el único driver Open-Source en soportar esta tecnología.

Por otro lado el driver propietario de ATI (catalyst) tiene serios problemas para seguirle el ritmo de desarrollo de la plataforma Linux + Xorg, y frecuentemente no ofrece soporte para las últimas versiones de éstos.

Al mismo tiempo el soporte  que ofrece el driver poulson de Intel, fuera de las distribuciones Moblin o Ubuntu, es muy pobre.

Cuando se refiere a reproductores multimedia XBMC, parece ser una muy buena opción ofreciendo soporte para VDPAU y Broadcom Crystal HD, en cualquier caso es recomendable revisar: VA-API y VDPAU para revisar los reproductores multimedia que soportan estas APIs.

Videos en Wikipedia serán OGG

21 julio 2009 Los comentarios están cerrados

En una entrevista realizada a Erik Möller, se dan a conocer nuevas herramientas de wikipedia que permitirán facilitar el subir vídeos en el formato ogg Theora.

Este es un formato 100% libre que puede ser utilizado sin limitaciones y sin tener que pagar ningún tipo de licencia (ver Licencia), el cual ya ah sido adoptado por el popular navegador Firefox, y próximamente también será soportado por Opera y Chrome.

Dentro de las cosas nuevas que se esperan encontramos: un nuevo reproductor de vídeo, plug-in de Firefox y herramientas en el servidor que facilitarán la conversión de formatos de vídeo.

Categorías:Tecnologías Web Etiquetas: , , , ,