El codec de baja complejidad (LC-AAC o simplemente AAC) surge a fines de los años 90s para sustituir a mp3. AAC incluye la
tecnología Perceptual Noise Substitutionmediante
la cual se sustituye información innecesaria en el audio para reducir
su tamaño. El codec fue actualizado a principios de los 2000 agregando la tecnología
Spectral Band Replication (SBR)que
elimina del audio bandas de frecuencia que después son recuperadas,
reduciendo aún más el tamaño del archivo, así se da paso al codec
HE-AAC (High-Efficiency Advanced Audio Coding).
Para mediados de los 2000 se incluye la tecnología Parametric Stereocon
la cual es posible codificar audio estéreo como sonido monofónico y
recuperar el segundo canal mediante un parámetro que ocupa muy pocos
bytes, así nace HE-AAC v2 (High-Efficiency Advanced Audio Codingsecond version). Este codec es ampliamente utilizado en las comunicaciones y
dispositivos multimedia.
Pasó una década para que codec fuera actualizado. A mediados de los 2010 se agregó la tecnología USACque
implica una mejora de calidad sustancial a bajísimos bitrates, sobre
todo en lo referente a la codificación de voz. La inclusión de USAC dio paso al sucesor de la famila: xHE-AAC (extended High-Efficiency Advanced Audio Coding), sin embargo aún no tiene un uso y compatibilidad suficiente.
En lo que se refiere a calidad, cada sucesor de la familia Advanced Audio Coding supera al anterior a bitrates cada vez más bajos. Sin embargo para altos bitrates se vuelven prácticamente equivalentes. Por lo tanto el uso de los codecs más avanzados (HE-AACv2 y xHE-AAC) es de
interés para bajos bitrates, lo cual otorga ventajas de almacenamiento
en espacio mínimo o de transmisión por internet prácticamente en tiempo
real. De hecho la familia de Advanced Audio Coding incluye las versiones
de ultra baja latencia de cada actualización de su codec: AAC-LD,
AAC-ELD y AAC-ELD v2.
Comparación
de percepción de calidad para los codecs de Advanced Audio Coding.
Notar como después de cierto valor de bitrate, los codecs se vuelven
prácticamente iguales y para bajos bitrates las curvas de calidad se van
separando acentuandose las diferencias entre las tecnologías (
https://hydrogenaud.io/index.php?topic=109486.0)
Las tecnologías que se fueron incluyendo en cada generación de Advanced Audio Coding
Limitaciones notables de los codecs HE-AACv2 y xHE-AAC
xHE-AAC actualmente tiene poco uso debido a su baja compatibilidad. Aunque se supone que Android incluye licencia de uso de este codec. Asimismo el codec tiene las mismas limitaciones que su antecesor (HE-AACv2) debido a que es un upgrade de éste e incluye las tecnologías de todos sus predecesores.
El
codec HE-AACv2 codifica los canales de audio como sonido
monofónico y guarda en pocos bytes las diferencias entre los canales
para que el decodificador pueda reconstruirlos. También aplica la
eliminación de bandas de frecuencia y su posterior recuperación mediante
duplicación de la información (limitación heredada de HE-AAC).
Como
es lógico, entre más complicado sea el audio más difícil será obtener
buenos resultados. Por ejemplo el audio con efecto estéreo fuertemente
marcado o con una amplia cantidad de frecuencias, tendrá resultados
menos satisfactorios.
Para
las canciones o pistas de audio los mejores resultados se obtienen
cuando se convierte directo desde el CD o de los archivos originales en
formato flac, raw o wav. El resultado de convertir un mp3 es sutilmente
inferior a convertir un archivo flac original. Tampoco sirve convertir
el audio a flac primero y después codificarlo con AAC.
La licencia de Advanced Audio Coding
Para
decodificar audio, todas las generaciones de Advanced Audio Coding son
completamente libres. A partir del codec HE-AAC la licencia para
codificar es restrictiva y pertenece a Fraunhofer IISel cual la libera para Android y programas de pago de PC, existiendo un proyecto libre Fraunhofer FDK AAC(fdkaac) que
distibuye el codificador pero en codigo fuente (el usuario debe
compilarlo). Anteriormente Nero AG distribuía un ejecutable completamente
gratuito (NeroAACEnc.exe) pero no siguió desarrollándolo y lo retiró de
la página.
Ffmpeg
no puede distrubirse compilado con los codecs de alta eficiencia ya que están
patentados pero si puede distribuirse código fuente de FFmpeg con dichos codecs.
Diferencias entre fdkaac y otros codificadores
El
algoritmo para codificar audio con la tecnología Advanced Audio Coding
siempre sigue los estándares del codec pero cada desarrollador puede
agregar variantes que conducen a resultados distintos.
Las
diferencias entre uno y otro radican en la forma que programaron los
cálculos. Al final el codec toma los datos y realiza muchos cálculos con
ellos. A mayor precisión, mejores resultados se tendrán. Entre más
simples más rápida será la aplicación y entre más complicados más
tardará en procesar el audio. Pasos del algoritmo para descartar
frecuencias pueden variar de una implementación a otra.
El
codec de Nero (NeroAACEnc) es muy bueno, pero no
siguieron desarrollándolo desde el año 2008. Aún así los resultados que
genera son muy cercanos a codecs mas actuales y casi siempre resulta en
archivos más pequeños. Sin embargo falla para bitrates menores a 24
kbits/s, prácticamente se hace inutilizable.
El codec de EZ CD Audio Converter es
uno de los mejores ya que el programa se actualiza constantemente y se
logran apreciar resultados sutilmente superiores, sobre todo a bajísimos
bitrates (menores a 16 kbits/s).
fdkaac
tiene la ventaja de ser un proyecto open source soportado por miles de
usuarios de todo el mundo. Es superior a NeroAACEnc e igual a EZ CD a
bitrates superiores a 16 kbits/s.