Qué es un Codec

Qué es iun codec (vídeo y audio)

Codec proviene del acrónimo codificador-decodificador, y podemos definirlo como «programa capaz de codificar o decodificar un flujo de datos de vídeo o audio».

Por tanto, debemos quedarnos con la idea de que el codec es un software que procesa una señal de entrada (de vídeo o audio) y que entrega una versión codificada, normalmente comprimida, a su salida. Asimismo, debe ser capaz de realizar el proceso inverso para decodificar la señal.

Software y Hardware

Aunque hemos definido los codecs como software (y en el fondo siempre son algoritmos informáticos) es cierto que a veces los encontramos en forma de hardware, como dispositivos capaces de digitalizar y codificar señales analógicas de vídeo o audio, o simplemente convertir formatos digitales entre sí.

Chas Video Converter: conversor de vídeo y audio gratuito para Windows.
Chas Video Converter: conversor software gratuito (vídeo y audio) para Windows.

Codecs y compresión

Uno de los aspectos más característicos de los códecs, y el que generalmente determina si un codec es mejor que otro, es su capacidad para comprimir la información digital sin que el vídeo o audio resultante pierda calidad aparente, a veces llamada calidad subjetiva.

Calidad objetiva vs. subjetiva

La calidad objetiva es la información de la que se compone una imagen, vídeo o audio en su origen, sin haber recibido ningún tipo de pérdida.

La calidad subjetiva, en cambio, es la que el usuario percibe al consumir una imagen, vídeo o audio, habiendo pasado éste por algún tipo proceso de compresión. Diremos que la calidad subjetiva es alta cuando el resultado comprimido parece tan bueno como el fichero original a ojos dele spectador, y diremos que la calidad es baja cuando se percibe que el producto se ha degradado de alguna forma (se ve pixelado, se escucha peor, se aprecian artefactos de imagen, etc.).

Diferencia entre una imagen RAW y una versión JPG comprimida. En este caso el ojo humano no aprecia la diferencia.
La calidad objetiva es diferente entre las imágenes, ya que la compresión JPG siempre aplica pérdidas. Sin embargo, diremos que la calidad subjetiva es la misma en este caso, ya que el ojo humano no es capaz de apreciar la diferencia.

Tipos de compresión

La compresión se divide, por lo general, en 2 categorías: compresión reversible (lossless) y compresión irreversible (lossy).

Reversible (Lossless)

La compresión reversile es aquella que reduce la información digital de un archivo (en definitiva, reducir el número de bytes) sin que se genere una pérdida de calidad objetiva en el fichero. Es decir, no se pierde información, ya que se podrá recuperar en su totalidad al descomprimirla.

Este categoría se basa en algoritmos de compresión estadística, como veremos más adelante en este artículo.

Irreversible (Lossy)

La compresión irreversible es aquella que reduce la información digital de un archivo (en definitiva, reducir el número de bytes) a través de la eliminación de información visual redundante. Es decir, se pierde información, pero si se hace correctamente, sin abusar, el ojo humano no debería ser capaz de apreciarlo.

Diferencia entre una compresión JPG de alta calidad y una compresión JPG demasiado agresiva.
En este caso vemos una diferencia notable entre una compresión JPG adecuada (alta calidad) a la izquierda y una compresión demasiado agresiva (baja calidad) a la derecha. La degradación se aprecia especialmente en zonas de alto detalle, como el pelo.

Técnicas de compresión

La compresión se basa en algoritmos matemáticamente complejos y difíciles de describir, por lo que en este artículo veremos una descripción básica de los tipos más comunes de compresión de imagen y sonido.

Compresión estadística

Esta técnica está basada en aprovechar patrones repetitivos de 0s y 1s en el fichero digital para poder crear una versión comprimida (de menor peso), sin que se genere ningún tipo de pérdida de información (tipo lossless). Este es el tipo de compresión que usan programas como WinRAR, WinZip, 7zip, etc., pero que también es usada por los propios códecs.

Compresión espacial

Este tipo de compresión se basa en dividir la imagen en cuadros pequeños (por ejemplo de 8×8 píxeles) y analizarlos individualmente. Si dentro de ellos se encuentran detalles o diferencias de color imperceptibles para el ojo humano se intentan eliminar. Es un tipo de compresión lossy, y es aplicada por la mayoría de códecs, tanto de imagen como de vídeo: JPG, MPEG, Theora, VP9, etc.

La forma en que la imagen es dividida en cuadros más pequeños puede provocar que éstos se aprecien en el vídeo final si la compresión es demasiado agresiva. A veces, cuando decimos que «se ve pixelado», es debido a una compresión demasiado alta.

Compresión cromática

Hay diferentes formas de abordar una compresión basada en color. Una compresión sencilla es la de los formatos que limitan la gama de color de una imagen a una paleta de pocos colores. De esta forma cualquier color que se salga de esa paleta es mapeado a su color más próximo dentro de ella, y se consigue reducir drásticamente la cantidad de información a transmitir de la imagen. Por lo general es un proceso bastante destructivo, aunque dependerá de la naturaleza de nuestra imagen. Este sistema lo utilizan formatos como GIF y PNG.

Otra forma común de reducir información cromática es simplemente reducir la cantidad de muestras que se usan para representar las señales de color, dejando intactas las de luminancia. Esto lo aplican muchos códecs de vídeo y es debido a que el ojo humano es más sensible a la información lumínica (de brillo) que a la información cromática (de color). Cuando se habla de subsampling de color, o vemos un parámetro del tipo «formato 4:2:0», se está haciendo alusión a este tipo de compresión, pero ya lo veremos con más detalle en próximos posts.

Chroma Subsampling
Algunos formatos de Chroma Subsampling. Una señal RGB (3 canales) es representable como una señal de luminancia (Y) y dos señales de diferencia de color (U,V), que luego se pueden muestrear de diferentes maneras. Por ejemplo, un muestreo 4:2:0 usará un único píxel de cada señal de color (U y V) para cada 4 píxeles (2×2) de luminancia.

Ambas formas de compresión cromática generan pérdidas de información, es decir, son lossy.

Compresión temporal y predictiva

La compresión temporal aprovecha la repetición de partes de la imagen entre fotogramas consecutivos, de forma que puede reducir la información a enviar. También utiliza predicción de movimiento, que en ocasiones ayuda a reducir la información enviada.

Compresión de vídeo aprovechando la redundancia temporal
Compresión de vídeo aprovechando la redundancia temporal. Tan sólo haría falta enviar cuánto se mueve el cuadro de la moto, ya que el fondo se repite frame tras frame.

Aunque conceptualmente sencillo, lo cierto es que es un tipo de algoritmo bastante complejo.

La idea con la que debemos quedarnos es que un vídeo con mucho detalle y mucho movimiento en la escena produce archivos de mucho mayor tamaño (ya que la información es difícilmente comprimible). Por el contrario, un vídeo con poco movimiento e imágenes sencillas producirá archivos de mucho menor tamaño.

Compresión frecuencial (audio)

Usada en formatos de audio como MP3, se basa en la eliminación de frecuencias que el oído humano no es capaz de percibir, ya sea porque quedan fuera del rango de 20Hz-20KHz o porque quedan enmascaradas por otras frecuencias de mayor amplitud (mayor sonoridad).

Algunos conceptos en la compresión sonora mp3
Esta imagen muestra algunos conceptos aplicados en los algoritmos de compresión sonora, como MP3.

Aunque pueda sonar raro, la compresión frecuencial también se utiliza en la compresión espacial de vídeo, ya que cualquier señal es matemáticamente representable como conjunto de frecuencias (a tarvés de un proceso llamado Transformada de Fourier). Sin embargo, no es objeto de este artículo entrar en esos detalles.

Otros parámetros de los códecs

Hemos analizado la compresión como el aspecto clave de un códec porque realmente es el que determina la calidad del resultado. Sin embargo, hay otros aspectos a tener en cuenta.

Velocidad y eficiencia

Comprimir vídeo es una tarea computacionalmente costosa y dependiendo de la complejidad del algoritmo y de la longitud del vídeo, la codificación puede llegar a costar incluso horas. Un aspecto importante de un códec es la velocidad a la que puede obtener el resultado.

Capacidades del codec

La capacidad para procesar diferentes tipos de señal de entrada y de salida; por ejemplo, señales de vídeo con produndidades de bits diferentes, canal alpha, etc. Para conocer más aspectos clave sobre vídeo puedes consultar el post parámetros del vídeo digital.

Complejidad del algoritmo

Hemos mencionado que son programas informáticos computacionalmente costosos, por lo que un factor diferencial es cómo un códec hace uso intensivo (pero óptimo a la vez) de la CPU, la memoria RAM y la tarjeta gráfica, en la medida de lo posible.

Codecs de vídeo y audio

Este artículo ya es bastante extenso, por lo que se han clasficado en los siguientes posts los mejores codecs de vídeo y los mejores codecs de audio.

Entrada anterior
Qué es un formato de audio
Entrada siguiente
Parámetros del vídeo digital

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Rellena este campo
Rellena este campo
Por favor, introduce una dirección de correo electrónico válida.
Tienes que aprobar los términos para continuar

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.