Entrevista a los desarrolladores de FFmpeg (2da parte)

(cc) by Alexander Grundner

Esta es nuestra segunda entrega de la Entrevista a los desarrolladores de FFmpeg (Primera Parte), que fue publicada originalmente en Phoronix.  No hace falta más introducción que la que podrán encontrar en ese artículo, asi que vamos directo a la entrevista.

Respecto a la aceleración de video por hardware, Baptiste dice que el soporte de VDPAU ya fue integrado en FFmpeg y que el soporte de VA-API se está integrando.  Recordemos que el VDPAU es una API para Unix creada por NVIDIA e implementada en su driver para acelerar por hardware la decodificación de video, otros fabricantes como Intel también están en camino de implementar esta API.

AMD/ATI ya estaba realizando un esfuerzo similar llamado XvBA (X-Video Bitstream Acceleration), y los desarrolladores de FFmpeg dicen que si bien no se han contactado para implementar esta tecnología en FFmpeg, se espera que se esto se lleve a cabo apenas se liberen los drivers.  De todas formas, el equipo de FFmpeg está desarrollando una API para facilitar la integración con los mecanismos de aceleración que está desarrollando cada fabricante.

Multithreading

La decodificación de video en FFmpeg se realiza en un solo hilo de ejecución (thread), esto quiere decir que al decodificar video en un procesador con más de un core como los que son normales hoy en día, no se aprovecha la capacidad multi-core y se deja todo el procesamiento en un solo core.

Se están realizando pruebas en una rama paralela de desarrollo llamada ffmpeg-mt (multithread) para implementar la decodificación en múltiples hilos de ejecución, los cambios no son menores porque afectan a muchas partes del código y hay preocupación de que el rendimiento decaiga en sistemas de un solo core.

Considerando que el tiempo que llevará estabilizar esta rama será de varios meses, y probarla también tomará varios meses,  Diego cree que esta versión multithread de FFmpeg podría tomar años.

Nuevos codecs

Mientras los desarrolladores de FFmpeg se enfocaban en implementar codecs que son estándar de la industria, crearon dos nuevos codecs propios : FFV1 y Snow.  FFV1 es un formato de video sin pérdida de alto rendimiento que comprime mejor que H.264, mientras que Snow es un codec basado en wavelets que puede ser usado tanto sin pérdida como con pérdida y según los entendidos es mucho más eficiente que los codecs existentes (rududu, dirac, xdiv, divx).

Snow es capaz de mantener una alta calidad de imagen a una baja tasa de transferencia (bitrate).  Su desarrollo se ha estancado y quedan aspectos por definir.  Los desarrolladores han ofrecido una recompensa para quien quiera terminar la especificación de Snow pero hasta ahora nadie se ha manifestado.

Aspectos legales

FFmpeg se usa en varios proyectos de código abierto como GStreamer, XBMC, VLC Media Player y otros como Wii Video 9.  Sin embargo, la implementación que los llena de orgullo es el uso de FFmpeg en YouTube, XDCAM EX Clip Browser de Sony y por supuesto su integración en MPlayer.  FFmpeg está licenciado bajo GPL y LGPL, lo que implica que se puede usar tanto en proyectos libres compatibles con GPL como en proyectos no libres por medio de las condiciones de LGPL. Aún así hay proyectos en donde se han violado estas licencias.

Recientemente crearon una sección Hall of Shame en su sitio web para publicar las compañias y proyectos que violaran los términos de estas licencias.  Diego es uno de los cabecillas de este trabajao y ha tenido éxito resolviendo este tipo de problemas legales.  A veces los infractores trabajan rápidamente para responder y corregir el problema, pero otros casos pueden tomar meses.

Diego no tiene claro si serán capaces de resolver todos los casos. En forma complementaria, recientemente se hicieron partners del Centro de Leyes de la Libertad del Software (Software Freedom Law Center) quienes representarán a los desarrolladores en temas legales.  Hasta ahora, todo se ha solucionado con negociaciones amistosas, pero en cualquier momento las cosas se pueden volver turbias.

Los desafíos

El desafío más grande que tienen es encontrar gente que pueda mantenerse trabajando en proyectos de largo plazo.  Escribir codecs es muy complejo y los desarrolladores de FFmpeg reconocen que algunas características serían muy útiles, pero no pueden trabajar en ellas debido a la falta del tiempo y/o motivación.

Lo que ha resultado bien es el sistema de recompensas para el trabajo más complejo y en esto han recibido apoyo de compañías externas.  FFmpeg no tiene una corporación detras, pero compañias como BBC fundaron el trabajo del codificador de VC-3.  El partner de código abierto Oy está financiando a Robert en la implementación de la extensión HE AAC del codificador AAC de FFmpeg y también está trabajando en el soporte de IPTV para MythTVGoogle Summer of Code, el proyecto de Google para financiar a estudiantes para que trabajen apadrinados por un experto en proyectos de código abierto, ha sido muy importante para el éxito contínuo de FFmpeg.

En esta entrevista participaron sólo 3 de los desarrolladores activos de FFmpeg.  En los últimos seis meses se han recibido aportes de unas 42 personas, en donde 31 de ellas han hecho más de diez aportes.  De estos 42, cerca de una docena de ellos son extremadamente activos y han realizado más de 50 aportes en el mismo periodo.  Esto, sin contar con todos los entusiastas que realizan las pruebas de FFmpeg y proveen soporte via IRC y la lista de correo.

Links :
An interview with the developers of FFmpeg (Phoronix)
Entrevista a los desarrolladores de FFmpeg – 1ra parte (FayerWayer)