HomeDivulgaciónCódecs, la magia de la codificación

Códecs, la magia de la codificación

Códecs, la magia de la codificación

¿Qué le pasa a nuestros contenidos cuando se digitalizan? ¿Qué hace a unos formatos mejores que otros? ¿Por qué unos contenidos logran mucha mayor calidad, y al mismo tiempo ocupan mucho menos espacio? Veamos cómo funcionan nuestros contenidos digitales cuando los empaquetamos y los transportamos. Luís Pavía nos lo cuenta en este artículo.

En esta ocasión centraremos nuestro laboratorio para desgranar uno de los elementos que manejamos continuamente, y del que en ocasiones no siempre tenemos suficiente información para obtener el máximo de sus posibilidades. Porque al igual que antiguamente el tipo de negativo y su procesado afectaban al resultado final de los contenidos, actualmente uno de los parámetros vitales para lograr nuestro propósito con las mayores garantías de éxito es el correcto manejo de los formatos de registro.

Tranquilos, que no vamos a remontarnos hasta la película en negativo. De hecho, incluso omitimos citar la práctica totalidad de los formatos antiguos y SD, intentando centrarnos en la mayoría de los actuales. Que ya veremos cómo están a la vuelta de 5 años. Adelantamos nuestras disculpas si echáis de menos alguno que se nos haya podido quedar en el tintero.

No esperéis una enumeración comparativa y exhaustiva de todos los que actualmente existen. Primero, por falta de espacio físico. Segundo, porque los ciclos de obsolescencia/renovación dejarían este contenido anticuado en muy poco tiempo. Tercero, porque nos parece más ilustrativo dar a conocer los criterios que permitan elegir en cada momento la solución más adecuada a cada necesidad. Y cuarto, porque en las tablas informativas de los distintos fabricantes no siempre encontramos colecciones de datos homogéneos y comparables.

Para ello, comenzaremos arrojando luz sobre algunos aspectos que, salvo para los profesionales directamente implicados con su manejo, no siempre se manejan con propiedad. En general se tiende a hablar de formatos, pero el término “formato” a veces se utiliza para aludir a un con[1]junto de características, y si bien es cierto que el “códec” es una de ellas, también engloba otros parámetros. Y dada la amplia variedad de combi[1]naciones disponibles, es importante tener claro de qué estamos hablando en cada caso.

La capa más externa que debemos diseccionar para llegar a nuestros datos binarios la constituiría el “soporte”, la tarjeta de memoria o el disco donde guardamos nuestros ficheros. Soporte físico y concepto todavía muy superficial y alejado de nuestro laboratorio, pero muy ilustrativo para entender con facilidad que aunque una máquina sea capaz de encajar determinado tipo de tarjeta, eso no significa que siempre será capaz de leer su contenido. Ejemplos ampliamente conocidos son las tarjetas SD en sus distintas variantes, XQD, P2, SxS… y última[1]mente, para los grandes volúmenes que generan nuestras cámaras, los distintos tipos de discos duros: convencionales, SSD, M.2, etc.

Este soporte físico alberga el fichero, al que a menudo se le identifica por su “formato”. Pero este término tiene dos acepciones y esto da lugar a las primeras confusiones. Por el momento citamos sólo la primera acepción, que alude al tipo de fichero al que a partir de ahora denominaremos exclusivamente como “contenedor”, y es el responsable de agrupar los distintos contenidos. Es el fichero binario, identificado por su extensión. Que en realidad se parece mucho a las cajas de zapatos en nuestro armario de casa: tenemos la posibilidad de utilizar cajas idénticas y contiguas para almacenar distintos contenidos: la colección de monedas, las fotos antiguas, los gorros de lana, e incluso ¡zapatos! Además, y atención a esta idea porque es clave en nuestro caso: contamos con la posibilidad de guardar distintos tipos de contenidos simultáneamen[1]te en la misma caja.

¿Y cuáles son esas diferentes “cosas” que contiene nuestra caja de zapatos digital? En nuestro caso, el contenedor alberga en el mismo fichero como mínimo tres o cuatro tipos de contenidos diferentes, pero íntimamente relacionados entre sí. Debe tener la colección de imágenes que forman nuestra secuencia de vídeo, las diversas pistas de sonido asociadas a estas imágenes, algún tipo de código de tiempo o al menos la sincronización entre audio y video. Otros contenidos que podríamos encontrar en algunas ocasiones son los metadatos genéricos del fichero con información extendida del contenido, como fecha y hora de registro, o marca, modelo y número de serie del equipo que lo ha generado. Además, también podría contener diversas colecciones de subtítulos. Contenedores ampliamente conocidos son los ficheros de tipo WAV, AC3, AAC, PCM, WMA, y MP3 en el caso particular de sólo audio. O para vídeo entre otros, los AVI, MP4, MOV, MXF, M2TS, FLV…

Un primer dato importante: el contenedor no influye en la calidad del video. Como un primer ejemplo, recordemos que dentro de un contenedor .MOV podríamos encontrar un vídeo en MPEG2 con su audio en MP3, y en otro contenedor .MOV podríamos albergar un vídeo en H.264 con su audio en AAC. Aunque no todos los contenedores pueden contener todos los códecs, la relación entre contendor y calidad sólo depende del tipo de códec que puede albergar. Y el tipo de códec seleccionado en cada caso.

Continuando con nuestra disección, el “códec” no es ni siquiera el fichero de vídeo. El códec es nada más ¡y nada menos! que el algoritmo, el procedimiento matemático que se ha empleado para compactar los datos binarios de la secuencia a tratar, con imágenes por una parte y sonido por otra, para almacenarlas en un soporte digital y que nos permitirá reconstruir nuestros contenidos, nuestra grabación, siempre que el equipo de destino entienda esos mismos códecs. Es el método para empaquetar, almacenar y distribuir nuestro contenido digital. Y debe ser compatible con las capacidades del reproductor o destinatario que vaya a tratar o visualizar dichos contenidos.

Efectivamente, el procedimiento debe ser bidireccional, y de ahí su nombre: “códec” viene de co-dec, acrónimo de codificador-decodificador. Suelen ser piezas de software que se alojan en nuestros ordenadores al instalar determinadas aplicaciones, o que los fabricantes incorporan en, por ejemplo, sus cámaras. También se puede dar el caso de disponer de codecs vía hardware, que en realidad no son más que chips que ya llevan ese software integrado, y que están dedicados exclusivamente a este proceso.

En el caso del audio, sobre todo en sus principios, era frecuente una relación única entre contenedores y códecs, propiciando que más tarde, al extenderse el uso del video en medios digitales se tienda a mantener esta asociación equivocadamente.

Pero, ¿tiene sentido que hoy en día que haya tantos códecs? Hay varias razones, y todas se reducen básicamente a dos grupos: evolutivo-tecnológicas primero y comerciales después. Y todas siempre persiguiendo el mismo objetivo: ofrecer el máximo de calidad con el mínimo volumen de datos. Es decir, variando la técnica de compresión en función de la tecnología disponible, se obtienen distintos resultados. Y aquí empiezan las divisiones originadas por los distintos propósitos a los que se orienta cada sistema.

Porque no se comprime igual si lo que pretendo es distribuir un contenido ya elaborado a través de una red con un ancho de banda limitado, que si el propósito es leer directamente ese mismo contenido desde un soporte con mínimas limitaciones de velocidad. Ambos incluso alejados, si preciso conservar la mayor cantidad de información posible para procesar (editar, etalonar, etc.) esta grabación.

Cada fabricante y desarrollador ha intentado ir cubriendo diversas necesidades y los nichos de su interés que han ido surgiendo. Y con la evolución de la tecnología en capacidades de procesado, almacenamiento, y transmisión por distintos medios, combinado con las distintas necesidades de los múltiples actores en el mundo audiovisual, el escenario es realmente amplio e intrincado.

Llegados a este punto, y antes de identificar los distintos propósitos para los que los que cada códec pueda ser más adecuado, haremos un esbozo de lo que significan ciertos términos frecuentemente utilizados para distinguir a unos códecs de otros. Y sobre todo, saber cuáles son los aspectos claves en los que nos deberemos fijar a la hora de elegir el nuestro.

Algoritmo: método basado en el uso de funciones matemáticas, cuyo interés consiste en la capacidad de regenerar una secuencia de datos binarios a partir de una colección de datos de menor volumen. Aunque hoy se utilizan varias, en su día destacó la DCT, acrónimo de la “transformada de la discreta del coseno”, siendo en su momento la función matemática más frecuentemente utilizada en las técnicas de compresión de todo tipo de datos binarios, incluso antes de la generalización masiva del tratamiento de datos audiovisuales.

Compresión espacial: es la que se produce dentro de cada frame individualmente, y de forma independiente a las imágenes anterior y posterior de cada fotograma tratado. Reduce el volumen de información agrupando zonas de pixels que comparten el mismo color. Si se deja una cierta tolerancia en ese valor, se logra una compresión mayor, pero el resultado final es una imagen con defectos o artefactos claramente visibles. El más característico son las franjas con saltos de color donde debería haber un degradado suave y continuo.

Compresión temporal: es la que se produce agrupando la información de varias imágenes consecutivas. Reduce el volumen de información evitando el reenvío de una colección de datos para determinadas zonas, a base de identificar su contenido como “idéntico en la secuencia de imágenes desde un frame A hasta otro B”. De nuevo, si nos excedemos con la tolerancia, el defecto que encontraremos es que determinadas áreas de la imagen no tienen un movimiento fluido, sino con pequeños saltos.

Cuando se utilizan ambas técnicas simultáneamente, se da lugar a las compresiones de tipo “inter-frame” (entre cuadros). Mientras que si sólo se utiliza la espacial, estaríamos en una modalidad “intra-frame” (dentro del cuadro). Simplemente con esto ya podemos tener claro que si nuestro propósito es la transmisión de contenidos perseguiremos una modalidad “inter-frame”, ajustando la compresión para optimizar el ancho de banda, hasta obtener la mejor transmisión con el mínimo de datos. Mientras que si nuestro propósito requiere editar contenidos conservando el máximo de información original, deberemos orientarnos hacia una modalidad “intra-frame”.

Muestreo: Otro importante factor a tener en cuenta. En el inicio del proceso de digitalización, antes de comprimir la señal, se hace un muestreo de color que consiste en la traducción del valor de la luz incidente sobre cada pixel de nuestro sensor en un dato binario. En función de la cantidad de información que utilicemos en ese proceso precisaremos de un tipo de códec u otro para conservarla adecuadamente. En este caso, normalmente las cámaras nos permiten elegir la resolución (HD, UHD, …), la frecuencia de cuadro (24, 25, 30, 50, 60…), el tipo de barrido (i, o p, entrelazado o progresivo).

También nos suelen permitir seleccionar la profundidad de color en un rango limitado en función del tipo de cámara: 8, 10, 12, 14 e incluso 16 bits de color por canal. En ocasiones también el muestreo de color, que en función de la cantidad de información que se registre entre luminancia y crominancia serán los conocidos 4:2:0, 4:2:2, 4:4:4 y hasta 4:4:4:4. En los casos más avanzados, incluso el gamut y los espacios de color.

Ni todas las cámaras tienen estas opciones, ni todos los códecs son capaces de soportarlas. Primera elección importante: ¿Qué códecs soportan el tipo de información que deseo guardar/transmitir?

Si pensamos en la cantidad de pixels por segundo que hay que leer, interpretar, guardar, transmitir, descomprimir y recuperar para disfrutar de una secuencia audiovisual, comenzamos a hacernos una idea de la ingente potencia de procesado necesaria para lograrlo. De ahí que la evolución tecnológica disponible en cada uno de esos apartados haya sido el límite de las distintas posibilidades a lo largo del tiempo, aunque su velocidad de crecimiento es exponencial, y la de nuevos códecs casi también.

De hecho, uno de los parámetros que se utiliza para identificar las posibilidades de los códecs es su tasa de datos, el conocido “bitrate” expresada en Mbps. Un valor mayor significa que está conservando mayor cantidad de información, aunque requiere mayor ancho de banda para su transmisión, un mayor volumen de almacenamiento, y no siempre ofrecerá una imagen de mayor calidad. De ahí la importancia de la eficiencia del códec. Entonces, ¿cómo es posible que un fichero significativamente más pequeño nos ofrezca más calidad de imagen y sonido que otro mucho más voluminoso? Esta es precisamente la pregunta clave donde reside la habilidad de cada códec, para la que no hay un parámetro de eficiencia estandarizado, y que no tiene que ver sólo con las matemáticas, sino también con la percepción de nuestros sentidos.

Porque los límites están tan ajustados, que ya no se juega sólo con la cantidad de información a guardar/recuperar como un mero dato, sino que se controla delicadamente que características de la percepción humana detectan estas imperfecciones con más o menos precisión, para mantener el máximo de exigencia en los niveles más críticos de la percepción, y ser más permisivos con aquellos otros para los que nuestra percepción es menos sutil.

Y atención a una nueva distinción: no confundir tampoco el códec (el método de almacenamiento) con la curva de tratamiento de la luz y el color (Canon LOG Gamma para Canon, V-Log para Panasonic, o S[1]Log para Sony, por citar algunas) que afectan a la conversión [estímulo analógico –> salida digital] previa a la compresión y empaquetamiento. El códec es el algoritmo, y la curva el método para el tratamiento de la luz en la conversión analógico-digital.

Así, nos encontramos con una gran variedad de códecs. Y los que son excelentes para determinado propó[1]ito (por ejemplo, transmisión), pueden llegar a ser muy malos para otro (por ejemplo, etalonaje). Recordemos que todos buscan comprimir la señal tanto como sea posible de forma que el contenido sea recuperable en destino con la máxima calidad aparente o necesaria. Y “aparente” significa que nosotros lo vamos a percibir mejor, aunque se sacrifiquen otras características. Y “necesaria” aquella por debajo de la cual el contenido no es aceptable. Y esta última es muy diferente según el escenario en el que nos estemos desenvolviendo.

Como decíamos, si nuestro propósito es emitir un contenido ya elaborado, los niveles de precisión de color y de movimiento no son tan exigentes como si pretendemos emitir un evento deportivo en directo, dónde tampoco hay que editar pero sí es crítica la fluidez en la imagen. Y todavía tenemos que ir más allá si estamos grabando contenidos que después hay que editar y etalonar, en cuyo caso necesitaremos mucha menos compresión para poder hacer después un tratamiento muchísimo más preciso tanto de la luz y el color, como del movimiento.

Continuamos abriendo el abanico: No hay que olvidar que los escenarios actuales de transmisión no se limitan al broadcast vía aérea “tradicional”, ya que las transmisiones a través de redes de datos directamente desde servidores hasta las pantallas de los clientes van cobrando relevancia, tanto en configuraciones de sobremesa “SetTopBox”, hasta las descargas a las tablets y los móviles en configuraciones de emisiones en directo y de video bajo demanda.

Por si todo esto fuera poco, además hay que tener en cuenta el coste. Sí, el precio. La otra característica que ha repercutido directamente en la evolución de los códecs. La mayor parte de los que utilizamos en distintas plataformas implican una serie de costes de los que no somos conscientes directamente, pero forman parte del precio que pagamos por los productos que adquirimos, sean cámaras, procesadores, software, etc. Y de ahí también nace una buena parte de las limitaciones de compatibilidad. Los desarrolladores, especialmente los grandes, prefieren disponer de su propio producto para tener, además, la mejor integración y rendimiento con sus propios dispositivos.

Ciertamente nos aproximamos al punto en el que hay más sensación de complejidad que de soluciones. Pero no es el caso. Se trata de dar visibilidad a la gran cantidad de parámetros que hoy, y sobre todo mañana, hay que tener en cuenta a la hora de elegir un códec, saber para qué sirven sus propiedades, y cuáles son las más importantes para nuestro propósito. Porque en este momento el punto de inflexión debido a las grandes resoluciones como 4k y 8k, la mayor profundidad de color, y los enormes rangos dinámicos que ahora se pueden alcanzar, resultarán decisivos en los desarrollos presentes y futuros.

¿Podremos utilizar siempre cualquier códec? No. Siempre estaremos limitados por el propio dispositivo captador. ¿Debemos utilizar siempre “el más poderoso”? Evidentemente, no. ¿Debemos utilizar el que más comprima? Por supuesto que tampoco. Entonces ¿Qué me debo preguntar? ¿Cómo saber que códec es el ideal? Es muy fácil, y pensamos que con una única pregunta nos encaminamos a la mejor solución. En este caso, empezando por el final: ¿Para qué estoy generando ESTE contenido? Porque serán muchas las ocasiones en las que pueda necesitar varias versiones del mismo contenido si está dirigido a distintas finalidades. Y debo tener presente todo el flujo de trabajo.

Porque, como siempre, se trata de una cuestión de equilibrio. Utilizar el códec más poderoso implica necesariamente la capacidad de procesar y almacenar un enorme volumen de datos, con sus correspondientes requisitos mínimos en CPU’s, GPU’s, almacenamiento y controladoras ultra rápidas, etc. Y si bien nos proporciona la mayor cantidad de información posible, ideal para el rodaje de un master que luego debe pasar procesos de HDR, WCG, etalonaje, composición, etc., todo el equipamiento necesario a lo largo de todo el flujo de trabajo debe estar el máximo nivel. Que en otros muchos casos será completamente innecesario si de lo que se trata es de realizar la emisión de un contenido ya producido para hacerlo llegar, a través de distintos medios de transmisión, hasta las múltiples pantallas de los distintos espectadores.

Así que con todas estas premisas enumeradas, vamos a hacer un repaso por algunos de los códecs actualmente disponibles, y otros nuevos en desarrollo que llegarán a nuestras manos a corto plazo, para intentar arrojar el máximo de luz a sus necesidades, requerimientos, bondades y limitaciones para ser capaces de hacer en cada momento la selección más adecuada en función de nuestras necesidades. O nuestro presupuesto.

Comenzando con la captación, y por la parte más alta de las posibilidades, nos encontramos con la colección de RAWs en toda la gama de fabricantes/desarrolladores: normalmente sin compresión, y cada uno propietario de los distintos fabricantes de cámaras. Arri, Blackmagic, Bolex, Canon, Panasonic, Red, Sony… Cada uno ofrece el suyo (o los suyos…) en cada modelo de cámara, en función del sensor, propósito y prestaciones para las que se ha concebido.

Los RAW son un caso bastante particular, ya que estrictamente no se trata de un códec en sí mismo, sino de un método de volcado de toda la información captada por el sensor en bruto, en “crudo”, para posibilitar su tratamiento posterior con el máximo de prestaciones. Se trata de un método exclusivamente de captura, sin compresión o con una compresión mínima sin pérdidas, que requiere de ingentes volúmenes de almacenamiento con enormes velocidades de transferencia, y el software de decodificación necesario para ser interpretado por la plataforma de edición. Sólo se utiliza como origen y nunca como destino en los flujos de trabajo.

Es más, hay cámaras que no son capaces de grabar internamente en raw, pero sí proporcionan una salida dedicada de video, directa del sensor y sin compresión, o con una compresión mínima, útil para grabadores específicos, de la propia marca o de otros fabricantes, como es el caso del conocido Atomos.

En esta línea, una de las últimas tendencias ha sido la de buscar el mejor equilibrio entre volumen de datos y capacidades de edición, desarrollando códecs específicos que conserven la mayor parte de las posibilidades de tratamiento de los datos raw, sin generar volúmenes tan ingentes de información. Así, por ejemplo, el formato Canon Cinema RAW Light, o el Sony X-OCN, son formatos que ocupando entre 2/3 y 1/5 del volumen promedio de un raw completo (en función de sus variantes y ajustes internos), mantienen una gran parte de las posibilidades de posproducción de un fichero RAW original.

Esto se traduce inmediatamente en contenidos de muy alta calidad dentro de ficheros mucho más manejables a lo largo de todo el flujo de trabajo. Para una gran cantidad de producciones, el resultado es más que suficiente y el ahorro en costes muy significativo. Aunque todos estos son códecs propietarios, todos los desarrolladores proporcionan el software necesario que facilitan su manejo en la mayoría de las plataformas de edición. Y la frontera entre un raw puro y estos estos otros se va haciendo cada vez más difusa, ya que permiten tocar algunos parámetros en post-producción (espacios de color, gamma, chroma sub sampling, debayering, etc…) hasta ahora exclusivos de los primeros.

Aunque, lógicamente, tanto las cámaras como los grabadores externos utilizan sus propias colecciones de códecs. Actualmente, entre los más conocidos en la gama alta, encontramos aquellos desarrollados específicamente para cámaras por los propios fabricantes o desarrolladores de software. Nos vienen a la mente los contenedores/códecs: AVCHD, DNxHD y DNxHR (Avid), ProRes (Apple), XAVC (Sony), XDCAM, XF-AVC (Canon), … lamentablemente, incompatibles entre sí.

Como podemos ver, no todos los códecs de alto nivel proceden sólo de fabricantes de cámaras, sino que algunas compañías como Apple o Avid, involucradas desde hace muchos años en la creación audiovisual con sus equipos y/o software, también han desarrollado códecs que se han convertido en estándares de hecho en el sector. Podemos considerar que el más extendido en este sentido es el ProRes en sus muchas variantes. Con multitud de opciones y parámetros configurables, inicialmente sólo estuvo disponible en el entorno Mac, pero resultó tal la acogida de este códec en el mercado que hace ya muchos años también se podía leer desde plataformas Windows, e incluso desde hace pocos años, también generar ficheros con este códec sin estar condicionados a hacerlo exclusivamente desde plataformas Mac, gracias a los plug-ins desarrollados para paquetes de edición como Adobe Premiere.

Otras etiquetas que estaremos esperando, como los conocidos H.264 y H.265 (HEVC), son códecs de uso muy extendido, y un excelente ejemplo de las distintas eficiencias que se han logrado con la mejora de la tecnología a lo largo del tiempo. Ambos están orientados a la transmisión de señales a través de distintos medios, encontrando en H.265 una mejora significativa y muy perceptible de la calidad para el mismo flujo de datos.

En este caso ya se trata de códecs orientados fundamentalmente a la transmisión. Y también resultan un excelente ejemplo del galimatías de nombres y acrónimos, ya que H.264 es “simplemente” la identificación de la especificación MPEG-4 Parte 10 AVC (Advanced Video Codec) publicada en 2003 y ampliamente utilizado en DVDsHD, Blu-Rays, teledifusión de televisión en HD, sobre todo en Europa, y fuentes de internet como iTunes, YouTube y Vimeo.

Su evolución, H.265, ya conoce 4 versiones publicadas sucesivamente entre los años 2013 y 2016, soportando resoluciones hasta 8k y diferentes espacios de color que incluyen Rec2020 y Rec 2100 entre otros. En términos genéricos, podemos generalizar que los 32Mbps de ancho de banda necesarios para la transmisión de un flujo 4K en H.264 se reducen a 15 Mbps para la transmisión del mismo flujo en H.265. Es decir, que H.265 es el doble de eficiente que H-264.

Claro, que todavía nos quedan más factores a tener en cuenta, como el tiempo de codificación de un contenido para archivado o transmisión. Efectivamente, a igualdad de condiciones, distintos códecs requerirán distintos tiempos de procesado o “render”.

Competidor relevante al H.265 es el VP9, códec de video desarrollado por Google en código abierto y orientado a la distribución de contenidos en streaming de sus plataformas, dando la posibilidad a la visualización de contenidos 4k con el mismo ancho de banda que antes se requería para HD, además de posibilitar su modificación para otros usos más allá de Chrome y YouTube.

Y otro de los últimos contendientes en esta área, también de código abierto y gratuito, el AX1. Forma parte de los últimos desarrollos de la “Alliance for Open Media”, una plataforma de desarrollo de código abierto, que cuenta con esta gratuidad como una de sus grandes bazas.

En definitiva, como hemos podido comprobar, dentro del extenso y creciente mundo de los códecs, nos sentimos entusiasmados por la continua llegada de mejoras, pero reconocemos que a menudo nos dificultan más que nos simplifican. Pensamos que la mejor opción, siempre que el tiempo y el presupuesto lo permitan, es hacer algunas pruebas antes de embarcarnos en proyectos de envergadura.

Probando todo el flujo de trabajo desde la captura, visualización, post[1]procesado, conformado, y generación de los distintos formatos finales que se requieran. Será la única forma de tener información 100% fiable. No porque los fabricantes no la proporcionen. Sino porque debido a la forma de tratar las imágenes, el mismo equipo puede dar diferentes resultados al tratar mejor un tipo de imágenes que otro. Y hacer la comprobación completando todo el flujo de trabajo, a través de los distintos pasos intermedios, y llegando a los códecs finales en los distintos ficheros que se precisen para los distintos propósitos.

Este artículo fue publicado originalmente en el número 130 de la revista TM Broadcast.

Los estudios de Medi
Alianza entre Salesf