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:
|
MPEG-2 BC | ISO/IEC 13818-3 | Proporciona:
|
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:
|
MPEG-7 | ISO/IEC 15938 | Proporciona:
|
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.
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.
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:
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.
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.
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.
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 |
F | MPEG-1 | MPEG-2 | MPEG-2.5 |
00 | 44100 | 22050 | 11025 |
01 | 48000 | 24000 | 12000 |
10 | 32000 | 16000 | 8000 |
11 | Reservado |
J | Bandas |
00 | 4-31 |
01 | 8-31 |
10 | 12-31 |
11 | 16-31 |
J | Intensidad | M/S Stereo |
00 | No | No |
01 | Sí | No |
10 | No | Sí |
11 | Sí | Sí |
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) |
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 |
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.
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 |
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' |
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: