MPEG-1 Layer III

Algoritmo de Codificação

As especificaçoes MP3 definem como um fluxo de dados deve ser estruturado e interpretado mas nao como deve ser realizado o codificador. Desde que um codificador produza um fluxo de dados que se encontre em conformidade com a norma é considerado um codificador normativo. Esta liberdade de implementaçao permite alguma concorrencia entre os vários fabricantes que é benéfica para a evoluçao da tecnologia. De seguida é descrito o funcionamento de um codificador de MP3 típico (Figura 4).

Figura 4

Figura 4. Esquema de codificação do MPEG-1 Layer III. [7]

Filterbank

Um filterbank é um conjunto de filtros passa-banda que separam o sinal de entrada em várias componentes, cada uma contendo uma única sub banda de frequencia do sinal original. A saída, o sinal contém tantas sub bandas quanto o número de filtros existentes no filterbank - 32 no caso do MP3. Esta técnica permite isolar diferentes componentes de frequencia do sinal, bastante útil para a codificaçao de música. Como o aparelho auditivo humano é mais sensível a umas frequencias que outras, essas tem que ser exactamente preservadas na codificaçao, pois pequenas diferenças sao significativas. Por outro lado, frequencias menos importantes podem nao ser exactas, permitindo assim uma codificaçao mais eficiente.

A sequencia de 1152 amostras PCM é, como vimos, filtrada em 32 sub bandas igualmente espaçadas. Se a frequencia de amostragem for 44.1kHz, a frequencia de Nyquist1 é 22.05kHz, tendo cada sub banda aproximadamente 689Hz de amplitude (22050/32 = 689Hz). Como cada amostra pode conter componentes de frequencia de 0 a 22.05kHz, filtrados para a sub banda apropriada, o número de amostras aumenta com um factor de 32, pois cada sub banda guarda um sub espectro da frequencia da amostra.

Depois de filtrada, como cada amostra numa sub banda nao inclui todo o espectro de frequencia, há reduçao de informaçao. Contudo, e por nao haverem filtros passa-banda perfeitos, será introduzido algum efeito de aliasing.

MDCT - Modified Discrete Cosine Transform

Aplicando a transformada do co-seno discreta modificada a cada amostra das 32 sub bandas, há novamente uma subdivisao de cada sub banda em 18 mais finas, originando agora 576 linhas de frequencia (32*18 = 576), o que permite uma eliminaçao de redundância mais eficiente. No entanto, antes de aplicar a MDCT, cada sub banda está sujeita a um tipo de janela (Figura 5), determinada pelo Modelo Psico-Acústico (Ver secçao 4.1.4), com o objectivo de reduzir artefactos causados pelo limite de cada segmento.

Se o Modelo Psico-Acústico decide que o sinal da sub-banda presente é identica a anterior, é aplicado o tipo de janela Long, que melhora a resoluçao espectral dada pela MDCT. Caso contrário, se o sinal se apresentar bastante diferente do anterior, é aplicada a janela Short, melhorando a resoluçao temporal dada pela MDCT. Para melhorar eventuais transiçoes entre janelas, sao definidas duas janelas adicionais: Start e Stop. Uma janela Long torna-se uma Start se for seguida por uma janela Short. De maneira similar, uma Long torna-se Stop se for precedida por uma janela Short. As janelas Start e Stop sao enviesadas para os lados, para melhorar as transiçoes entre as janelas Long e Short. (Figura 5).

Figura 5

Figura 5. Tipos de janela: normal window (a), start window (b), short windows (c), stop window (d).[6]

O efeito de aliasing introduzido pelo filterbank é agora removido, reduzindo a quantidade de informaçao que é necessária transmitir.

FFT - Fast Fourier Transform

Simultaneamente ao processamento do sinal pelo Filterbank (4.1.1), este é também transformado do domínio do tempo para o domínio da frequencia através da Transformada Rápida de Fourier, originando assim uma maior resoluçao de frequencia e informaçao nas alteraçoes espectrais ao longo do tempo.

Modelo Psico-Acústico

Este bloco recebe como entrada o resultado de processamento da FFT (4.1.3). Assim, como as amostras se encontram no domínio da frequencia, é possível aplicar-lhes um conjunto de algoritmos que modelam a percepçao sonora humana, determinando que partes do sinal sao, ou nao, audíveis. Esta informaçao é útil para decidir que tipos de janela a MDCT deve aplicar e para oferecer ao bloco de Quantificaçao Nao Uniforme (4.1.5), informaçao sobre como este deve quantificar as linhas de frequencia.

O modelo Psico-Acústico detecta os tons dominantes calculando para cada banda critica um limite de "mascaramento". Estes limites sao utilizados pelo bloco de quantificaçao para que este mantenha o ruído de quantificaçao abaixo destes limites. Componentes de frequencia abaixo destes limites podem ser "mascaradas" por ruído sem que se de uma perda de qualidade perceptível.

Escalonamento e Quantificação Não Uniforme

Nestes dois blocos, a quantificaçao, o escalonamento e a codificaçao de Huffman sao aplicados aos 576 valores espectrais resultantes da MDCT (4.1.2), iterativamente em dois ciclos diferentes: Rate Control Loop e Distortion Loop.

Codificação de Huffman

Os valores quantificados sofrem uma codificaçao de Huffman. Cada sub-divisao do espectro de frequencia pode ser codificado com a utilizaçao de diferentes tabelas, de modo a adaptar e optimizar o processo de codificaçao a diferentes estatísticas dos sinais áudio.

Codificação de Informação Auxiliar

Todos os parâmetros gerados pelo codificador sao utilizados para permitir que o descodificador reproduza o sinal sonoro. Sao estes os parâmetros incluídos na parte "Informaçao Auxiliar" da trama.

Formatação dos Dados e Geração do CRC

Neste último bloco sao formadas as tramas que constituem um ficheiro MP3. Cada trama representa 1152 amostras PCM. No próximo capítulo é descrita a constituiçao dos ficheiros MP3.

Conteúdo dos ficheiros .mp3

Todos os ficheiros MP3 estao divididos em fragmentos mais pequenos designados por "tramas". Cada trama guarda 1152 amostras de áudio tendo uma duraçao fixa de 26ms quando é descodificado. O tamanho de cada trama depende do bitrate com que o sinal foi codificado e da frequencia de amostragem de acordo com a seguinte fórmula: 

Ao codificar um ficheiro com uma bitrate de 128 kbps e uma frequencia de amostragem de 44.100 Hz, vamos obter tramas de 417 bytes2. Para que a stream codificada cumpra exactamente o bitrate especificado, é necessário que algumas tramas tenham 418 bytes, sendo neste caso utilizado um byte de padding.

Cada trama é constituída por cinco partes (Header, CRC, Side Information, Main Data e Ancillary Data) estando representada na Figura 6.

Figura 6

Figura 6. Estrutura de cada trama MP3.

Header

Na Figura 7 encontra-se representada a estrutura do cabeçalho de uma trama MP3.

Figura 7

Figura 7. Estrutura do cabeçalho de uma trama MP3.

O cabeçalho de cada trama começa com 12 bits de sincronizaçao todos definidos a 1, ou seja '1111 1111 1111'. O facto de cada trama conter esta palavra de sincronizaçao permite que os descodificadores comecem a descodificar o sinal em qualquer ponto da stream, o que torna possível fazer broadcast de um ficheiro .mp3.

O campo ID é constituído por um bit que especifica qual a versao MPEG utilizada na codificaçao do ficheiro (1- MPEG-1, 0- MPEG-2).

O campo Layer especifica a camada utilizada (I, II ou III). Como vimos anteriormente, o MP3 corresponde a layer III.

O protection bit indica se será, ou nao, utilizado o CRC.

O campo Bitrate indica a taxa de bits por segundo com que está codificada a trama. Este valor pode variar entre 32kbps e 320kbps para o MPEG-1 layer III.

Os dois bits do campo Frequency indicam a frequencia de amostragem que pode ser de 32000Hz, 44100Hz ou 48000Hz no MPEG-1.

O bit de Padding é colocado a 1 quando uma trama utiliza padding.

O campo Mode define qual o modo de operaçao utilizado. É possível utilizar os seguintes modos de operaçao:

A técnica MS Stereo (apenas existente na camada III) codifica um canal (o middle channel) como a soma dos canais esquerdo e direito, e outro canal (o side channel), como a diferença entre o canal esquerdo e o direito. Visto que normalmente os canais esquerdo e direito sao bastante parecidos, o sinal correspondente a soma irá conter mais informaçao do que o da diferença, o que irá permitir uma codificaçao mais eficiente. Esta é uma técnica lossless, ou seja, nao acarreta perca de informaçao.

A técnica Intensity Stereo explora a dependencia entre canais, enviando, para as frequencias acima de 2 kHz, o sinal esquerdo somado com o direito. Neste modo, a informaçao de stereo está contida nos factores de escala enviados, que sao diferentes para cada um dos canais.

Os dois bits reservados para o Mode Extension sao utilizados apenas para o modo Joint Stereo, definindo a(s) técnica(s) utilizada(s).

Os bits de Copyright e Home tem como objectivo possibilitar algum controlo de direitos de autor. O bit Copyright define se é legal ou nao copiar os conteúdos do ficheiro codificado, e o bit Home indica se a trama se encontra no dispositivo original.

O campo Emphasis indica ao descodificador que tem de "re-equalizar" o som, depois de ser aplicado um algoritmo de supressao de ruído.

Side Information

O campo Side Information contém informaçao necessária para descodificar a Main Data, nomeadamente o passo de quantificaçao e a tabela de Huffman a utilizar na descodificaçao.

Main Data

A Main Data é constituída pelos factores de escala e pelos bits codificados com código de Huffman. Uma correcta definiçao dos factores de escala para cada banda é essencial para manter o ruído de quantificaçao baixo.

ID3

Inicialmente o MP3 nao previa a inclusao de informaçao textual descritiva do áudio codificado. Esta possibilidade foi introduzida com o ID3v1.1, através da inclusao de uma etiqueta no final de cada ficheiro MP3 que permite guardar informaçao sobre título, artista, álbum, ano, comentário, no da música e género musical. O ID3v1.1 apresenta duas limitaçoes significativas. O facto da informaçao ter de ser registada em cada um dos campos de informaçao predefinidos e de estes campos estarem limitados a um número fixo de bytes, torna o ID3v1.1 muito pouco flexível. Adicionalmente, o facto da informaçao ID3 ser inserida no final de cada ficheiro nao é adequado para realizar o streaming destes ficheiros.

Com o objectivo de resolver os problemas identificados no ID3v1.1 foi lançada a versao ID3v2. Nesta nova versao foram introduzidos novos campos de informaçao, sendo o seu tamanho dinâmico, o que permite uma introduçao de informaçao mais completa e flexível. No ID3v2 a etiqueta é inserida no início de cada ficheiro, o que facilita a operaçao de streaming.

Algoritmo de Descodificação

Os descodificadores para MPEG Layer III estao especificados detalhadamente nos standards ISO. Estas especificaçoes estao feitas de modo a que nao existam diferenças audíveis entre descodificadores que estejam em conformidade com a norma.

Na Figura 8 é apresentado o diagrama de blocos da estrutura do algoritmo de descodificaçao do MP3. 


Figura 8

Figura 8. Esquema de descodificação do MPEG-1 Layer III.

Sincronização e Verificação de Erros

Este bloco recebe o fluxo de dados, separando-o em tramas através da palavra de sincronizaçao existente no início de cada trama. Neste bloco é também realizada uma verificaçao dos erros existentes em cada trama.

Descodificação de Huffman

Este bloco efectua a descodificaçao de Huffman, utilizando as tabelas de Huffman recebidas. Este bloco tem de gerar 576 linhas de frequencia independentemente do número de linhas descritas no código de Huffman.

Descodificação dos Factores de Escala

Este bloco descodifica os factores de escala utilizando informaçao contida no campo Side Information.

Requantificador

As linhas de frequencia obtidas no descodificador de Huffman sao requantificadas, utilizando os factores de escala recebidos do descodificador de factores de escala.

Reordenamento

As linhas de frequencia geradas pelo Requantificador nao estao ordenadas sempre da mesma forma. De modo a aumentar a eficiencia de codificaçao de Huffman, as linhas de frequencia podem sofrer um reordenamento, visto que as amostras de frequencias próximas tem uma maior probabilidade de terem valores similares. Neste bloco é efectuada a reordenaçao destas linhas de frequencia.

Descodificação Stereo

Neste bloco é efectuada a separaçao dos dois canais dos sinais stereo. O modo como é efectuada esta descodificaçao depende do modo como foi realizada a codificaçao, que pode ser obtido no cabeçalho de cada trama.

Redução do Efeito de Aliasing

Na descriçao do algoritmo de codificaçao, foi referido que era aplicada uma reduçao do efeito de aliasing no bloco MDCT. Para obter uma correcta reconstruçao do sinal de áudio nos blocos de descodificaçao seguintes, é necessário voltar a inserir os artefactos de aliasing. Isso é feito neste bloco.

IMDCT - Inverse MDCT

Este bloco recebe como entrada as linhas de frequencia mapeadas em 32 sub-bandas. Aplicando a transformada discreta do coseno inversa modificada sao geradas 18 amostras no domínio do tempo para cada uma das 32 sub-bandas.

Inversão de Frequêcia

Para compensar as inversoes de frequencia que ocorrem no Filterbank de síntese, cada amostra ímpar (no domínio do tempo) de cada sub-banda ímpar, é multiplicada por -1.

Filterbank de Síntese

Este bloco transforma as 32 sub-bandas de 18 amostras do domínio do tempo em 18 blocos de 32 amostras PCM.