El Google I/O nos trajo una plétora de noticias, pero la más destacada, por lo menos en mi opinión, es el anuncio del formato de vídeo WebM: un heredero de Matroska, un contenedor multimedia libre -con licencia GPL-, que trae consigo VP8 para vídeo y Vorbis para audio.

¿Por qué es tan relevante esa tecnología? Porque es la apuesta libre y abierta (al menos en los términos de la licencia BSD) de Google, Mozilla, Opera y ¡Adobe! para efrentar y frenar la avalancha que significa el códec propietario H.264 apoyado por Apple (razón por la que vemos a Adobe en el otro bando), Microsoft y otros.

El experto

Dicho esto, vamos a detenernos en los aspectos técnicos, no politico-económicos, implicados en VP8. La idea es dimensionar correctamente su calidad frente a su principal rival, H.264. Y qué mejor que revisar el análisis de un experto: Jason Garrett-Glaser: principal desarrollador de x264, una implementación libre para codificar vídeo H.264/AVC, así como un contribuyente al código de FFmpeg.

Ahora bien, lo que aquí les ofrezco es un resumen del veredicto de Jason sobre el códec VP8, razonado dentro de un detallado análisis técnico, a propósito de la Google I/O. Él dice haber tenido acceso a la especificación y al código fuente de VP8 antes de su publicación oficial.

El veredicto

A. ¿Qué tan bueno es VP8 en relación con H.264?

En general, VP8 parece ser significativamente más débil que H.264 en términos de compresión. A su vez, VP8 es mucho mejor que Theora. En datos duros, la actual implementación de VP8 decodifica 16% más lento que la H.264 de FFmpeg, y 25-35% más lento el H.264 de CoreAVC.

B. ¿Qué tan buena es la implementación actual?

Jason es muy claro: “Mientras que el código en C no está del todo mal, el código ensamblador está claramente escrito por monos retardados.” Creo que aquí no resta más qué decir.

C. ¿Qué tan probable es que VP8 está libre de patentes?

VP8 es muy similar a H.264. El primero es algo así como “un códec H.264 Baseline Profile (una versión limitada del códec) con un mejor codificador entrópico“. Esto trae consigo una potencial demanda por uso no autorizado de patentes de software. No olvidemos la posible intervención de hábiles abogados en el asunto. Jason advierte que él sería “extremadamente cuidadoso”. Si Google tiene suerte y las demandas no llegan, VP8 será una excelente aportación en comparación con Theora.

Los comentarios extras

A. Sobre la implementación

Cuando VP3 fue liberado por On2, la comunidad tardó 6 años en convertirlo en el Theora de hoy en día. Claro, la implementación era lamentable. En cuanto a VP8, Jason menciona que la especificación es: pésima. Lo expresa con tremendo grito más largo que este “AAAAGGHHHH!”, y la resume con “Código C copiado-y-pegado no es una especificación”. La de H.264, en cambio, es “verbosa, pero […] precisa”. Agrega que no hay manera de escribir un decodificador con esa sola especificación.

B. Sobre WebM

Jason desconoce las razones de Google para renombrar Matroska por WebM: “es un nombre estúpido”, dice. Considera que Mastroska es una buena elección considerando que su especificación permite hacer streaming de vídeo, es decir, con codificación en tiempo real.

Y mis comentarios

No olvidemos que Google compró VP8 por 124.6 millones de dólares a la empresa On2 -de hecho, la adquirió toda-. Esa misma empresa fue quien en 2001 liberó el códec VP3 a la comunidad open source, y es el que hoy conocemos como Theora.

El esfuerzo de Jason para analizar el código y la especificación de VP8 resultó en un interesantísimo artículo, lleno de punzantes comentarios, pero sobre todo con conclusiones esclarecedoras. Google y las compañías que le acompañan, en mi opinión después de revisar el citado análisis, tienen mucho trabajo por hacer antes de entregarle a sus usuarios un software a la altura de H.264.

Con un mejor desempeño, y por ser open source, VP8 a través de WebM deberá convertirse en la opción estándar, de facto, para la web libre y abierta que el mundo necesita. ¿O alguien quiere pagar -directa o indirectamente- por reproducir vídeos con el aún-por-establecerse HTML5?

Imagen: Act, dont’t think