He tendido la suerte de poder asistir a 9 horas de clase con el profesor Francesc Tarrés sobre Codificación Audiovisual. Su capacidad docente es impresionante y fácilmente habría podido escucharlo durante un par de días más. Tarrés nos estuvo hablando de todo un poco, desde la televisión analógica a la digital, de la compresión de vídeo a la de audio, explicando detalles de los procesos de estandarización.

La parte más interesante para mí fue la relativa a MPEG4 Visual y MPEG4 Aadvanced Video Coding (esto es, H.264).

MPEG-4 Visual

Esta parte del megaestándar MPEG 4, tiene unas implicaciones casi de ciencia ficción. En lugar de codificar el vídeo con las técnicas habituales (redundancia espacial, redundancia temporal, codificación estadística), en Visual van un paso más allá y se describen Objetos Visuales con los que el usuario puede interactuar. Las aplicaciones de esto en Televisión O Cine como hoy los conocemos son realmente pocas, pero lo más interesante es lo que pueden hacer en nuevos escenarios donde la interactividad es importante, por ejemplo en los videojuegos.

En uno de los ejemplos que nos mostró, vimos cómo a partir de una foto de Tom Hanks o de La Gioconda, y a través de la extracción de los parámetros adecuados por parte del estándar MPEG-4 Visual, estos personajes hablaban y actuaban de una forma bastante natural. Sencillamente impresionante. Imaginad lo que pueden lograrse con estas técnicas implementadas en teléfonos móviles, en lo que a accesibilidad por parte de sordos se refiere.

H.264 / MPEG-4 AVC

La parte 10 del estándar MPEG 4, desarrollada por un grupo de expertos de la ISO y de la ITU, da lugar al mejor sistema de codificación de vídeo hasta el momento. De los tres perfiles que tiene, sólo uno es gratuito, pero no por ello menos potente. Es más, el estándar es tan potente y flexible… que las implementaciones actuales aún no han exprimido todo su potencial. Además, el estándar está desarrollado de tal forma que se establecen claramente cómo comunicar las cosas, pero no cómo hacerlas, por lo que dejan margen de mejora de los algoritmos a las implementaciones comerciales.

El perfil baseline tiene unas ideas fabulosas, como:

  • Intra predicción. Se divide la imagen en bloques, y para cada bloque siguiente, en lugar de enviarlo, lo que se hace es copiar información de alguno de los anteriores en la misma imagen. Esto hace que los fotogramas más pesados, los I, a los que no se les había eliminado ningún tipo de redundancia, sean ahora muchísimo más ligeros.
  • Nueva compensación de movimiento y pesos. Los estándares anteriores MPEG1 y 2 fallaban estrepitosamente al intentar predecir un fundido a negro o una rotación, ya que los vectores de compensación de movimiento sólo podían aplicarse a traslaciones. H.264 proporciona mecanismos para explicar cómo se comportan las 4 esquinas de cada bloque, haciéndose una interpolación para el resto de píxeles en el bloque. Esto resulta útil para Zooms y Rotaciones. Pero además, al aplicar pesos relativos a la hora de establecer referencias, los fundidos son fáciles de predecir, puesto que son una referencia anterior multiplicada por una constante.
  • Nuevos Fotogramas P. En los estándares anteriores, las referencias usadas para eliminar la redundancia temporal podían ser de un fotograma anterior (P) y/o de un fotograma posterior (B). En H.264, perfil baseline,  se establece una lista de imágenes de referencia anteriores y posteriores, de forma que se tiene un buffer de donde elegir distintas imágenes. Esto comprime mucho cuando hay movimientos repetitivos, como por ejemplo un niño en un columpio.

El estándar tiene otras muchas opciones, que pueden provocar un coste computacional relativamente alto, por lo que no se espera que se desarrollen codificadores comerciales completos hasta 2013.

Si os apetece echarle un ojo a las implementaciones de H.264, podéis mirar x264 que es GPL, así que podéis descargarla, compilarla y modificarla a vuestro antojo. Quien sabe, quizá consigáis un codificador potente y eficiente.