El formato AAC (Advanced Audio Coding ) es un códec con pérdida para audio creado por el grupo MPEG, grupo que incluye a diversas compañías como Dolby, el Instituto Técnológico Fraunhofer, AT&T , Sony y Nokia.. El fin del grupo MPEG era relevar al MPEG 1.0 audio, layer III (conocido coloquialmente como MP3) como códec estandar para el audio de consumo. A pesar de conseguir almacenar un archivo de audio de mayor calidad en menor espacio que el MP3, éste aún está mucho más extendido que AAC en el mercado de consumo. Sin embargo, esto está cambiando últimamente debido a que Apple Computer se decantó por utilizar AAC en lugar de MP3 tanto en su tienda online de venta de música Itunes (debido sobre todo a que AAC incorpora DRM para limitar la libre distribución de la música adquirida) como en su popular reproductor portátil Ipod.También es el formato de audio por defecto en muchos telefonós móviles de la compañía japonesa Sony y de la serie N de la finlandesa Nokia, en las consolas de nueva generación como PlayStation 3, PlayStation Portable(PSP) y Nintendo Wii, en muchos reproductores de audio portatil como el Microsoft Zune , toda la gama de Creative y toda la generación Walkman de Sony así como en PDA's() que trabajen bien con Windows Mobile bien con Palm OS. . Además, también es el formato que se usa en la Televisión Digital Terrestre(TDT,internacionalmente se conoce como Digital Video Broadcaste-Terrestrial(DVB-T)) en muchos paises

Otro factor (bastante controvertido) que está favoreciendo que numerosas compañías se decanten por AAC como códec de audio para sus productos es que incorpora DRM (Digital Rights Management), hecho que limita la distribución y copia de las obras con derechos de autor.

Además, aunque para distribuir contenidos en AAC no es necesaria licencia alguna (via radio por internet, por ejemplo) ésta si es necesaria para desarrollar códecs AAC. Para ello habría que pagar una patente. MP3 en cambio requiere una licencia para ambas cosas, pues distribuir contenidos en este formato puede hacerse libremente, lo cual lo sitúa en clara desventaja frente a AAC en el mundo digital actual.

AAC es un estándar en la industria desde 1997, en la que se estandarizó como la parte 7 del ya estándar MPEG-2 y posteriormente fue modificado en 1999 y estandarizado en el estándar MPEG-3 parte 3.

Como se dijo anteriormente, AAC vino a relevar al MP3 , por lo tanto, mejoró a este en varias cosas:

  1. El rango de posibles frecuencias de muestreo es más amplio: va desde 8KHz hasta 96KHz, frente al rango de 16KHz a 48KHz que emplea el MP3. Esto posibilita 2 cosas:
    1. Al aumentar la máxima frecuencia de muestreo posible aumentamos la máxima frecuencia que se puede codificar , pues siempre se tiene que cumplir que . Y además, al tener una mayor frecuencia de muestreo se tendrá un audio de mayor resolución. Además, AAC está preparado para soportar mejor las altas frecuencias (en este contexto se considera que una frecuencia es alta a partir de los 16KHz).
    2. Al disminuir la mínima frecuencia de muestreo nos permite codificar una señal con menos muestras por segundo. Esto disminuirá la calidad, pero también del bitrate (y por tanto el tamaño de archivo codificado), luego esto será interesante cuando prime el tamaño y la velocidad frente a la calidad.
  2. Dispone de hasta 48 canales independientes, frente a los 2 canales que soporta MP3 en la implementación estandarizada en MPEG-1 y los 5.1 (5 canales independientes más uno especial para sonidos graves) que soporta en la estandarización MPEG-2. Este hecho lo lace perfecto para sonido envolvente.
  3. Mayor eficiencia de codificación tanto para las señales estacionarias como para las transitorias.
  4. Se utiliza un filtro FIR que la ventana derivada de Kaiser-Bessel(KBD,Kaiser-Bessel derived) para eliminar así las filtraciones espectrales
  5. Utiliza de forma más eficiente que MP3 la técnica del estéreo conjunto (joint stereo), que es una técnica que permite unir varios canales que contienen información similar en uno solo con el fin de obtener la misma calidad (o, mejor dicho, la menor disminución de calidad posible) en mucho menos espacio. Se empezó a desarrollar cuando Internet empezó a ser una vía importante para la distribución de contenidos digitales. Pero por aquel entonces las conexiones a internet eran de una velocidad bajisima (unos 56Kbps teóricos usando un modem tradicional o hasta 128Kbps empleando una (cara por aquel entonces) linea RDSI(Red Digital de Servicios Integrados). Para hacer está fusión de canales hay principalmente 2 técnicas:
  6. A modo de resumen puede decirse que AAC consigue más calidad con el mismo bitrate o, de otra forma, la misma calidad con un bitrate inferior. Por ejemplo, un AAC con un bitrate de 128Kbps tendría la misma calidad que un MP3 con un bitrate de 175Kbps. Estas comparaciones se verán en los ejemplos finales.

Para llevar todo esto a la práctica AAC parte de 2 estrategias:

  1. Eliminar las componentes que son perceptualmente irrelevantes aprovechandose de los defectos del oído humano sin que un oyente perciba una disminución de la calidad.
  2. Eliminar la información redundante de la señal codificada.

La codificación se basa en la transformada del coseno discreta a la que se le añaden unos códigos de control de errores(AAC Error Protection Toolkit y AAC Error Resilient. Además, por si aún asi se produjesen muestras erróneas se utiliza el algoritmo módulo N de Luhn (Luhn mod N algorithm)sobre cada conjunto de muestras.

Este algoritmo se usa cuando se quiere verificar la validez de una cadena de cualquier tipo de caracteres. En concreto, el algoritmo genera un caracter de verificación que esté dentro del mismo rango que los caracteres de la cadena de entrada (si este rango es a-z, el caracter de verificación estará en este rango). Este caracter de verificación no es asignado aleatoriamente si no que existe un mapeado entre cada caracter de entrada y el caracter de verificación asignado. Un posible mapeado podría ser:

abcdefghijklmn
012345678910111213

Donde se ha asignado a las 14 primeras letras minúsculas los números del 0 al 13, donde el N del nombre del algoritmo representa el número total de simbolos mapeados (N=14 en este caso). El mapeado podría haber sido cualquier otro. En resumen, lo que se hace es convertir cada caracter de entrada al caracter numérico al que está asociado, procesar los cálculos necesarios en módulo N y una vez hecho esto mapear inversamente para obtener la secuencia de salida correspondiente.

AAC tiene en cuenta la complejidad de el flujo de entrada para realizar la codificación. En concreto, ofrece poder seleccionar la frecuencia de muestreo entre 8 y 96KHz, el número de canales entre 1 y 48 y la longitud de la ventana de filtrado entre una de 1024 puntos u 8 de 128 puntos, que ofrecerá mayor resolución temporal. Además, existen varios perfiles de codificación que serán seleccionados en función de la complejidad de la señal de entrada. Aunque quien implemente el códec puede diseñar otros distintos, por defecto el estándar propone 4:

  1. Baja complejidad(LC, del inglés Low Complexity):Es el modo más simple y por tanto el más utilizado
  2. El modo principal(MAIN, del inglés Main Profile): Es exactamente igual que el modo LC salvo por que incorpora predicción hacia atrás( Backward Prediction), técnica que tiene como fin estimar una muestra pasada a partir de las muestras actuales
  3. Modo de frecuencia de muestreo escalable(SSR, del inglés Scalable Sample-Rate ): Fue introducido por Sony al estandar MPEG-4. Con este modo la señal se divide en 4 bandas frecuenciales mediante el uso de 4 filtros paso banda. Sobre cada una de estas bandas se aplica la MDTC (#Modified discrete cosine transform) con un tamaño k de 32 o 256 muestras(en lugar de las 128 o 1024 muestras del AAC sin SRS).
  4. Predicción a largo plazo (LTP, de inglésLong Term Prediction): Es una mejora del perfil MAIN que incorpora predicción de muestras futuras a partir de las actuales y anteriores.

Además, para concluir, decir que a partir de AAC se han desarrollado otros dos formatos:

  1. AAC-LD(AAC, Low Delay o AAC de Bajo Retardo en español): Nació debido a la necesidad de crear un códec con un retardo minimo para las aplicaciones de audio bidireccionales (Full-Duplex)y de tiempo real que gozase además de las bondades del códec AAC(bajo bitrate y alta calidad de sonido). Gracias a ello puede utilizarse en telefonía, proporcionando así una mayor calidad de audio que los códecs utilizados usualmente para este fin(...). En éste códec se establece un retardo máximo de 20 ms.En la siguiente gráfica se puede ver una comparativa(cortesía de Wikipedia):

  2. HE-AAC( High Efficiency AAC o AAC de Alta Eficiencia): Representa el futuro del estándar MPEG-4 y está reconocido como el mejor códec(en cuanto a eficiencia se refiere) de audio disponible actualmente.Su primera versión es un estándar ISO desde el año 2001 y la última versión lo es desde el 2005. Es un códec con pérdida diseñado para aplicaciones de streaming de audio (esto es, podemos escuchar el archivo de audio a medida que se descarga, sin tener que descargar el fichero completo) como la radio digital. Por tanto está optimizado para trabajar con bajos bitrates y tener una complejidad minima( de hecho, HE-AAC es una extensión de AAC LC(AAC Low Complexity)).

    La versión actual (versión 2) incorpora Replicación de Banda Espectral (SBR, del inglés Spectral Band Replicacion) y Estéreo Paramétrico(del inglés Parametric Stereo). Gracias a SBR el códec sólo codificará las frecuencias bajas y medias mientras que las altas no se transmitirán (ni almacenarán) si no que serán obtenidas en el decodificador mediante la transposición de los armónicos de frecuencia baja/media haciendo uso además de cierta información adicional que también se transmite para que estás altas frecuencias puedan ser obtenidas. El que SBR no produzca una pérdida de calidad apreciable es debido a que el cerebro humano analiza con mucha mayor precisión las frecuencias bajas y medias que las altas. Por su parte, el estéreo paramétrico lo que hace es mezclar los 2 canales estéreo en un solo canal mono junto con una cierta información adicional(unos 3Kbps) para poder regenerar la distribución espacial del sonido.Gracias a esta información adicional el decodificador podrá darle la distribución espacial original al sonido (esto es, obtener de un canal mono 2 canales estéreo cada uno de ellos exactamente igual que los originales(idealmente)). Ésta técnica del estéreo paramétrico es especialmente importante para bajos bitrates, en los que sí se aumenta considerablemente la calidad de sonido.

    Por último decir que la técnica del estereo paramétrico está optimizada para un bitrate de entre 16 y 40 Kbps (Es decir, bitrates realmente bajos) y que se incorporó en la versión 2 de HE-AAC (si decodificamos un fujo binario HE-AAc Versión 2 que incorpora esta técnica con un decodificador HE-AAC versión 1 funcionará pero solo se obtendrá un canal mono).