Instituto Superior Técnico
Comunicação de Áudio e Vídeo
MP3

A Norma

Para que um formato de codificação seja implementado, é conveniente normaliza-lo. Ou seja, para evitar que cada fabricante faça uma norma diferente, é necessário impor regras para que a norma suporte um vasto número de aplicações e garanta uma interoperabilidade entre os vários dispositivos que a implementam. Seria muito difícil que determinada norma tivesse sucesso, se existissem vários grupos de utilizadores, cada um deles com uma forma diferente de utiliza-la. Assim, para definir uma norma, é necessário especificar o problema que se pretende que ela resolva, para de seguida analisar propostas tecnológicas de empresas para a solução do problema, escolhendo-se depois a melhor hipótese e implementando-a com a colaboração das várias empresas intervenientes.

Então como é a norma MPEG-1 Audio Layer 3 (MP3)?

Antes de mais, é necessário realçar que os codificadores de MP3 não são normativos. Isto é, cada fabricante tem a liberdade de decidir como utiliza as “ferramentas” disponíveis na norma. No entanto o bistream (aquilo que sai do codificador), é normativo, ou seja, tem uma sintaxe fixa, para que todos os descodificadores MP3 o consigam utilizar. Isto permite que a norma não fique estagnada no tempo, pois pode ser sempre melhorado o codificador, conseguindo sempre melhores resultados, sem nunca ser necessário modificar os descodificadores.

A norma MPEG-1 Audio Layer 3 utiliza as seguintes “ferramentas”:

·          Codificação blocos de 1152 amostras áudio (2 grupos de 576 amostras cada)

·          Estrutura híbrida de codificação tempo/frequência - Banco de filtros (sub-bandas) seguido de codificação de transformada (Modified DCT)

·          Comutação dinâmica de janela - Para aumentar a resolução na frequência, as 32 sub-bandas são subdivididas através da aplicação a cada uma delas de uma transformada com 6 ou 18 coeficientes o que dá um número máximo de componentes de frequência de 32×18 = 576 (ou 192). A janela mais pequena permite controlar a resolução no tempo e logo diminuir o efeito de pré-ecos

·          Sobreposição das janelas - A MDCT é aplicada com 50% de sobreposição para diminuir o efeito de bloco o que significa que a MDCT é aplicada a conjuntos de 12 ou 36 amostras das sub-bandas

·          Quantificação não-uniforme dos coeficientes MDCT (tipo exponencial) introduzindo maior erro nos coeficientes de maior amplitude (onde há menor sensibilidade ao erro); um mecanismo com 2 ciclos aninhados é tipicamente usado para a quantificação e codificação MP3

·          Codificação entrópica (Huffman) dos coeficientes MDCT quantificados e dos scale factors

·          Modelo Psicoacústico 2 sugerido na norma (mais complexo do que o modelo 1).

 Uma descrição mais detalhada destas ferramentas pode ser encontrada aqui.

 Um ficheiro MP3 tem os seus dados segmentados em tramas, cada uma delas correspondendo a um instante no tempo da música. Cada trama é composta por um cabeçalho (32 bits) e por dados de áudio propriamente ditos, podendo a sua estrutura ser ilustrada da seguinte forma:

 

De seguida será explicada a função de cada cabeçalho, bem como as opções que lhe estão associadas.

 

·          Sync (11 bits) – Este campo permite ao descodificador, sincronizar-se com a primeira ocorrência válida de uma trama. É especialmente útil para saltar de um ponto da faixa de música para outro

·          Id (2 bits) – Especifica se a trama foi codificada em MPEG-1 ou MPEG-2.

·          Layer (2 bits) – Especifica se a trama é Audio Layer 1, 2, 3 ou não definida.

·          Protection (1) – Se este bit for 1, é inserido um checksum de 16-bit antes do início dos dados de áudio

·          Bit Rate (4) – Define bit-rate da trama (de 32 a 320 kbit/s)

·          Sampling rate frequency (2) – Define a frequência de amostragem utilizada (32, 44.1 ou 48 kHz)

·          Padding bit (1) – Existe para garantir que cada trama satisfaz as exigências de bitrate com precisão. Por exemplo, para um dado bitstream podem existir tramas com 417 bytes e outras com 418 bytes, nesse caso as tramas de 417 bytes vão ter o bit de padding a (1) para compensar a discrepância

·          Private bit (1) – Pode ser usado por aplicações específicas para activar eventos

·          Channel mode (2) – Especifica o modo de codificação de áudio:

§          Mono

§          Dual Stereo – Canais codificados independentemente, por exemplo, 2 línguas

§          Stereo – Codificação independente mas partilha de campos comuns na trama codificada

§          Joint Stereo – A dependência entre canais é explorada através da técnica intensity stereo; acima de 2 kHz, envia-se o sinal L+R e factores de escala para os 2 canais (L e R) uma vez que a estas frequências já pode haver perda de sensação Stereo

§          Mono/Stereo (MS) – Os 2 canais são codificados como L+R (middle) e (side) L-R o que permite controlar melhor a localização espacial do ruído de quantização

·          Mode extension (2) – Usado apenas com Joint Stereo para informar o codificador se houve combinação de frequências nos canais

·          Copyright (1) – Informa se existe Copyright.

·          Original (1) – Informa se se trata de uma cópia ou não

·          Emphasis (2) – Raramente utilizado, serve para informar se se respeitou a Emphasis na gravação original

Como já foi dito, embora haja liberdade para implementar as “ferramentas” disponíveis de diferentes formas, as tramas do bitstream têm de ter exactamente a sintaxe descrita anteriormente, caso contrário os descodificadores de MP3 não conseguirão “compreender” os bits que recebem.