Formatos MPEG

MPEG es un grupo de trabajo de un subcomité de ISO/IEC (International Organization for Standarization / International Electrotechnical Commission) encargada del desarrollo internacional de estándares para la compresión, decompresión, procesado y representación codificada de vídeo, audio y su combinación.

Los estándares MPEG se desarrollan en fases numeradas, por lo que la especificación MPEG-2 no es una sustitución de MPEG-1 sino una ampliación o complemento del mismo. Lo que se conoce por "layers", son especificaciones de una familia de algoritmos de codificación para un mismo estándar. Para las señales de audio MPEG ha definido los estándares MPEG-1, MPEG-2, MPEG-4 y MPEG-7 que proporcionan:

Nombre Estándar Características
MPEG-1 ISO/IEC 11172-3 Proporciona codificación de un canal (mono) o dos canales (estéreo o mono dual) con tasas de muestreo de 32, 44.1 y 48 ksps. Las tasas de bits (bitrates) predefinidas son:
  • Layer I: De 32 a 448 kbps
  • Layer II: De 32 a 384 kbps
  • Layer III: De 32 a 320 kbps
MPEG-2 BC ISO/IEC 13818-3 Proporciona:
  • Una extensión multicanal compatible con MPEG-1 (Backwards Compatible: BC). Permite hasta 5 canales principales y además un canal de mejora de bajas frecuencias. Las tasas binarias se extienden hasta valores próximos a 1 Mbps.
  • Una extensión para tasas de muestreo menores. Ofrece tasas a 16, 22.05 y 24 ksps para bitrates de 32 a 256 kbps para el Layer I y de 8 a 160 kbps para los Layers II y III.
MPEG-2 AAC ISO/IEC 13818-7 Es un estándar de codificación audio de muy alta calidad de hasta 48 canales con tasas de muestreo desde 8 a 96 ksps con capacidades multicanal, multilenguaje y multiprograma. Trabaja a bitrates desde 8 kbps para señal monofónica de voz hasta más de 160 kbps/canal para codificación de muy alta calidad.
MPEG-4 ISO/IEC 14496-3 Proporciona:
  • Codificación y composición de objetos audio tanto naturales como sintetizados.
  • Escalabilidad en el bitrate.
  • Escalabilidad en la complejidad de los codificadores y decodificadores.
  • Audio Estructurado: Lenguaje universal para la síntesis de sonido.
  • TTSI: Un interfaz para la conversión de texto a voz.
MPEG-7 ISO/IEC 15938 Proporciona:
  • Descripciones estandarizadas y esquemas de descripción de estructuras de audio y contenido audio.
  • Un lenguaje para esas descripciones y esquemas de descripciones.

Existe además la versión denominada MPEG-2.5, que no es un estándar oficial, sino propietario del Fraunhofer Institute for Integrated Circuits, Alemania. Es una extensión del MPEG-1/2 Layer III que permite codificar a frecuencias de muestreo aún menores ( 8, 11.025 y 12 ksps).

El estándar MPEG-7 sirve para la incorporación de metainformación con la información de audio, y por tanto, está fuera del alcance de este trabajo. Nos centraremos sobre todo en los estándares MPEG-1 y MPEG-2 que sí definen formas concretas en las que se estructura el audio digital.

MPEG-1 Audio

El estándar MPEG-1 se terminó en 1992 y constituyó el estándar internacional ISO/IEC 11172-3, publicado en 1993.

Estandariza tres esquemas distintos para la codificación de ondas de sonido denominados Layers I, II y III. No estandariza el codificador sino el tipo de información que éste debe producir y cómo un decodificador debe dividir, descomprimir y sintetizar esta información para obtener el sonido codificado.

Puede combinarse la secuencia de bits (bitstream) audio con vídeo en lo que se conoce como un bitstrem de sistemas MPEG-1.

Codificación

La codificación MPEG-1 es general para cualquier señal de audio. La compresión que realiza no es de tipo lossless sino perceptiva. La codificación lossless aprovecha la redundancia de los datos para comprimirlos y la señal descomprimida es idéntica a la original.

La compresión que realiza MPEG aprovecha la irrelevancia, desde el punto de vista de sensación sonora, de parte de la información. Esta compresión no produce la misma señal después de la decodificación, su objetivo es que el resultado sea muy parecido para el oído humano. Básicamente analiza la señal en frecuencia y elimina aquellas componentes que se ven enmascaradas por otras (no se pueden oír) y empaqueta esta señal analizada en un bitstream MPEG-1 audio. Este bitstream tiene un formato fijo que descompone la señal en una secuencia de cuadros (frames) que, por norma general, son independientes unos de otros, lo que es adecuado para la difusión de audio.

Layers

Los tres layers definidos tienen diferentes propósitos. La complejidad del codificador y decodificador, el retardo de codificación/decodificación y la eficiencia de codificación son valores crecientes al cambiar a un layer mayor.

MPEG-2 Audio

El estándar MPEG-2 fue terminado en 1994 y constituye el estándar internacional ISO/IEC 13818-3, publicado en 1995. MPEG-2 AAC fue terminado y publicado como el estándar internacional ISO/IEC 13818-7 en 1997. Este estándar es la segunda fase del proceso de estandarización MPEG y consta de tres elementos bien diferenciados:

Layers y profiles

MPEG-1 y los dos primeros elementos de MPEG-2 contienen tres layers. Dada la compatibilidad de los dos primeros elementos de MPEG-2 con la primera fase, la especificación de los tres layers no varía.

Sin embargo, cuando hablamos de MPEG-2 AAC, que ya no es compatible con las versiones anteriores, se habla de tres perfiles (profiles). La diferencia radica en que los layers definen la estructura de la información codificada (sus tasas de muestreo, tasa de bits, etc.) y también la forma en que esta información debe ser transportada (bitstream formado por cuadros con una estructura fija). MPEG-2 AAC estandariza la forma que toma la información codificada pero no cómo debe ser transportada, lo que se deja a la aplicación. Por otro lado, MPEG-2 AAC, estandariza dos ejemplos típicos que pueden emplearse para el transporte de los datos: Los perfiles estandarizados para MPEG-2 AAC son tres, denominados Perfil Principal (Main Profile), de Complejidad Baja (Low Complexity Profile) y de Tasa de Muestreo Escalable (Scalable Sampling Rate Profile). Cada uno está indicado para unos determinados usos:

MPEG-4 Audio

Este estándar consta de dos versiones. El estándar MPEG-4 Versión 1 se terminó en Octubre de 1998 y se publicó en 1999. La segunda versión se terminó en diciembre de 1999 y se publicó en 2000.

MPEG-4 es una fase que engloba todos los esquemas vistos para MPEG-1 y MPEG-2 define estructuras de más alto nivel por las cuales se permite el control y la combinación de elementos audio procedentes tanto de fuentes sonoras digitalizadas (p.ej. por medio de los formatos MPEG-1/2, codificación CELP, etc.) como sintetizadas (voz o sonidos musicales, tanto simples como complejos).

Es por lo tanto un estándar que combina diferentes fuentes audio en un mismo bitstream con especial énfasis en aplicaciones multicanal, soporte multilenguaje, tasa binaria variable y recuperación de errores.

Codificación de voz en MPEG-4

La mayor novedad a los formatos de audio que incorpora MPEG-4 está asociada a codificaciones de voz con tasas binarias extra bajas.

El estándar especifica el uso de codificadores paramétricos de tasa binaria extra baja para la codificación de voz, que consiguen tasas binarias comprendidas entre 2 y 8 kbps. Los codificadores paramétricos establecen un modelo de señal que ajustan al sonido a codificar. La información transmitida son los parámetros del modelo que mejor lo ajustan a la señal.

Un esquema de compresión eficiente consigue mediante este método codificar la señal de voz con calidad de conversación a tasas tan bajas como 1.5 kbps. Se espera que esta codificación sea utilizada para la implantación del servicios de telefonía generalizados sobre Internet.

Estructura de un bitstream MPEG-1, MPEG-2 y MPEG-2.5

Los bitstreams de audio MPEG se componen de elementos denominados cuadros (frames). Los cuadros, por norma general, son independientes unos de otros.

Cada cuadro tiene su propia cabecera e información de audio. No existe una cabecera específica de fichero. Por lo tanto, se pueden separar cada uno de los cuadro y reproducirlos separadamente. Esto no es del todo cierto para MPEG-1 Layer III, donde los cuadros son habitualmente dependientes unos de otros.

Esta estructura de los bitstreams MPEG hace que se puedan utilizan tasas de bit variables, especificando una en cada cuadro. Esto permite que la tasa de bit dependa del contenido del cuadro, pudiendo reducir las tasas binarias cuando no impliquen una pérdida de calidad mejorando la razón de compresión de los datos.

Cabecera de cuadro MPEG

La cabecera del cuadro está constituida por los cuatro primeros bytes del mismo. Los once primeros bits valen siempre uno y constituyen la sincronización de cuadro. Este valor permite buscar por el bitstream las fronteras entre cuadros, ya que se trata de un byte con valor 255 seguido de un byte de valor mayor que 224.

Una vez encontrado se lee el resto de la cabecera y se deben validar los datos que contiene. Cualquier valor indicado como reservado, inválido, incorrecto o no permitido debe dar como resultado una cabecera incorrecta.

La validación del primer cuadro no es suficiente. La secuencia de sincronización puede aparecer frecuentemente con ficheros binarios, por lo que se deben validar las cabeceras de varios cuadros para poder afirmar que estamos tratando con un bitstream MPEG audio.

Los cuadros pueden contener un CRC de 16 bits. Si este CRC está presente, siempre se sitúa justo después de la cabecera MPEG. Después del CRC se encuentra la información de audio.

Campo Longitud (bits) Posición Descripción
A 11 31-21 Sincronización de cuadro. Todos los bits valen 1.
B 2 20-19 Identifica la versión de MPEG Audio
00 – MPEG Version 2.5 (1)
01 – reservado
10 – MPEG versión 2
11 – MPEG versión 1
C 2 18-17 Descripción del layer empleado:
00 – reservado
01 – Layer III
10 – Layer II
11 – Layer I
D 1 16 Bit de protección. Sólo si vale cero la cabecera va seguida de un CRC.
E 4 15-12 Especifica el bitrate empleado, su interpretación es función de los campos versión y layer. Sus posibles valores se encuentran en la tabla siguiente.
F 2 11-10 Tasa de muestreo. Sus posibles valores están recogidos en la nota (2)
G 1 9 Bit de relleno.
El relleno se emplea para ajustar de forma exacta la tasa de bits escogida. Un valor 0 indica que el cuadro no lleva relleno y un valor 1 indica que se emplea un relleno de un slot. Un slot son 4 bytes para el Layer I y 1 byte para los Layers II y III.
H 1 8 Bit privado.
Puede ser usado libremente por la aplicación. Por ejemplo para lanzar un determinado evento.
I 2 7-6 Modo de canal:
00 – Estéreo
01 – Joint-stereo
10 – Dual
11 – Mono
J 2 5-4 Extensión del modo.
Contiene información para el modo joint-stereo, que simula el efecto estéreo con un único canal. (3)
K 1 3 Copyright.
Si vale 1 indica que el sonido tiene copyright, 0 indica que no lo tiene.
L 1 2 Original.
Si vale 0 indica que el contenido es una copia. Si vale 1 indica que el contenido es original.
M 2 1-0 Énfasis.
00 – Ninguno
01 – 50/15 ms
10 – Reservado
11 – CCIT J.17
  1. La versión 2.5 no es estándar oficial. Para reconocer esta versión se está empleando el bit 20 a cero. Esto indica una sincronización de cuadro de 11 bits. Aquellos decodificadores que no soportan esta versión esperan que el bit 20 valga 1, como si la sincronización de trama tuviese longitud 12 bits. Inicialmente la sincronización era de 12 bits, pero se modificó para soportar esta nueva versión.
  2. Los posibles valores del campo F, que determina la tasa de muestreo (en sps) quedan reflejados en la siguiente tabla:

  3. F MPEG-1 MPEG-2 MPEG-2.5
    00 44100 22050 11025
    01 48000 24000 12000
    10 32000 16000 8000
    11 Reservado

  4. El rango de frecuencias en MPEG se divide en subbandas, de la 0 a la 31. Para los Layers I y II los bits indican las bandas en las que se realiza el estéreo por intensidad según la tabla:
J Bandas
00 4-31
01 8-31
10 12-31
11 16-31
Para el Layer III, este campo indica el tipo de joint-stereo a realizar (intensidad o Middle/Side) según la tabla:
J Intensidad M/S Stereo
00 No No
01 No
10 No
11

Audio con bitrate variable

La cabecera de los cuadros MPEG especifica el bitrate empleado mediante el campo E, cuya interpretación depende de los valores de los campos versión y layer.

La siguiente tabla muestra las diferentes combinaciones (datos en kbps):

Campo E Versión 1 Layer I Versión 1 Layer II Versión 1 Layer III Versión 2 Layer I Versión 2 Layers II y III
0000 Libre (1)
0001 32 32 32 32 8
0010 64 48 40 48 16
0011 96 56 48 56 24
0100 128 64 56 64 32
0101 160 80 64 80 40
0110 192 96 80 96 48
0111 224 112 96 112 56
1000 256 128 112 128 64
1001 288 160 128 144 80
1010 320 192 160 160 96
1011 352 224 192 176 112
1100 384 256 224 192 128
1101 416 320 256 224 144
1110 448 384 320 256 160
1111 Erróneo (2)
  1. El valor 0000 se emplea en casos en los que el bitrate empleado no corresponda con otro valor de la tabla. Su uso es únicamente interno, ya que otras aplicaciones no tendrían forma de determinar el bitrate apropiado.
  2. El valor 1111 no está permitido y debe dar lugar a una cabecera incorrecta.

La variación de este campo en la cabecera de sucesivos cuadros da lugar a un bitstream de tasa de bit variable (VBR: Variable Bit Rate). Esta posibilidad debe estar implementada en los decodificadores del Layer III y se recomienda su implementación para los Layers I y II. Para el caso del Layer II existen combinaciones de tasas de bit y modos no permitidas.

Las únicas combinaciones permitidas son las siguientes:

bitrate Modos permitidos
libre Todos
32 1 canal
48 1 canal
56 1 canal
64 Todos
80 1 canal
96 Todos
112 Todos
128 Todos
160 Todos
192 Todos
224 Estéreo, joint-stereo, dual
256 Estéreo, joint-stereo, dual
320 Estéreo, joint-stereo, dual
384 Estéreo, joint-stereo, dual

Tamaño y longitud de un cuadro

El tamaño de un cuadro es el número de muestras que contiene, y es un valor constante. Para el Layer I es de 384 muestras y para los Layers II y III son 1152 muestras.

La longitud de un cuadro es la que tiene cuando está comprimido y se calcula en slots. Un slot son 4 bytes para el Layer I y 1byte para los Layers II y III.

Se debe computar esta longitud para poder localizar el siguiente cuadro. Las longitudes pueden cambiar debido a variaciones en las tasas binarias.

MPEG Audio Tag ID3v1

El TAG es una estructura utilizada para describir un fichero de audio MPEG. Contiene información sobre el artista, título, álbum, año de publicación y género. Además contiene un espacio adicional para comentarios. Ocupa los 128 últimos bytes de un fichero de audio MPEG.

Se compone de una serie de campos recogidos en esta tabla:

Campo Longitud (bytes) Posición Descripción
A 3 0-2 Identifica el TAG, debe contener la cadena "TAG" si se ha incluido en el fichero y es válido.
B 30 3-32 Título
C 30 32-62 Artista
D 30 62-92 Álbum
E 4 93-96 Año
F 30 97-126 Comentario
G 1 127 Género

El género es un número que se interpreta según las correspondencias de la siguiente tabla:

0 'Blues' 20 'Alternative' 40 'AlternRock' 60 'Top 40'
1 'Classic Rock' 21 'Ska' 41 'Bass' 61 'Christian Rap'
2 'Country' 22 'Death Metal' 42 'Soul' 62 'Pop/Funk'
3 'Dance' 23 'Pranks' 43 'Punk' 63 'Jungle'
4 'Disco' 24 'Soundtrack' 44 'Space' 64 'Native American'
5 'Funk' 25 'Euro-Techno' 45 'Meditative' 65 'Cabaret'
6 'Grunge' 26 'Ambient' 46 'Instrumental Pop' 66 'New Wave'
7 'Hip-Hop' 27 'Trip-Hop' 47 'Instrumental Rock' 67 'Psychadelic'
8 'Jazz' 28 'Vocal' 48 'Ethnic' 68 'Rave'
9 'Metal' 29 'Jazz+Funk' 49 'Gothic' 69 'Showtunes'
10 'New Age' 30 'Fusion' 50 'Darkwave' 70 'Trailer'
11 'Oldies' 31 'Trance' 51 'Techno-Industrial' 71 'Lo-Fi'
12 'Other' 32 'Classical' 52 'Electronic' 72 'Tribal'
13 'Pop' 33 'Instrumental' 53 'Pop-Folk' 73 'Acid Punk'
14 'R&B' 34 'Acid' 54 'Eurodance' 74 'Acid Jazz'
15 'Rap' 35 'House' 55 'Dream' 75 'Polka'
16 'Reggae' 36 'Game' 56 'Southern Rock' 76 'Retro'
17 'Rock' 37 'Sound Clip' 57 'Comedy' 77 'Musical'
18 'Techno' 38 'Gospel' 58 'Cult' 78 'Rock & Roll'
19 'Industrial' 39 'Noise' 59 'Gangsta' 79 'Hard Rock'

WinAmp expandió esta tabla con los siguientes códigos adicionales:

80 'Folk' 92 'Progressive Rock' 104 'Chamber Music' 116 'Ballad'
81 'Folk-Rock' 93 'Psychedelic Rock' 105 'Sonata' 117 'Poweer Ballad'
82 'National Folk' 94 'Symphonic Rock' 106 'Symphony' 118 'Rhytmic Soul'
83 'Swing' 95 'Slow Rock' 107 'Booty Brass' 119 'Freestyle'
84 'Fast Fusion' 96 'Big Band' 108 'Primus' 120 'Duet'
85 'Bebob' 97 'Chorus' 109 'Porn Groove' 121 'Punk Rock'
86 'Latin' 98 'Easy Listening' 110 'Satire' 122 'Drum Solo'
87 'Revival' 99 'Acoustic' 111 'Slow Jam' 123 'A Capela'
88 'Celtic' 100 'Humour' 112 'Club' 124 'Euro-House'
89 'Bluegrass' 101 'Speech' 113 'Tango' 125 'Dance Hall'
90 'Avantgarde' 102 'Chanson' 114 'Samba'    
91 'Gothic Rock' 103 'Opera' 115 'Folklore'    

NOTA: Cualquier otro valor debe interpretarse como desconocido ('Unknown'). La especificación indica que se deben rellenar los campos con ceros, aunque las implementaciones no siempre lo respetan (WinAmp rellena con espacios, ASCII 32).

Para la versión ID3v1.1 se propuso un pequeño cambio. Según éste, el último byte del comentario sirve como un número de pista dentro del álbum. Si esa información se desconoce su valor debería ser cero. Actualmente se está estandarizado una versión 2.4 mucho más completa y versátil, pero cuyo contenido en metainformación está fuera del interés principal de este trabajo que son los formatos de audio digital.

Para más información consultar estos dos documentos: