|
|
O MPEG-1 Audio Layer 3, mais conhecido por MP3, é tal como já descrito neste artigo um formato de codificação de áudio digital que faz uso do método de compressão de dados com perdas. A necessidade do seu uso recai na redução da quantidade de dados precisos para representar uma determinada composição de áudio, e ainda soar igual em termos de qualidade de som à reprodução original para a maioria dos utilizadores, não sendo no entanto considerado alta-fidelidade para a maioria dos audiófilos. Diversas bitrates encontram-se especificadas no standard MPEG-1 Layer 3 sendo estas: 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, 192, 224, 256 and 320 kbit/s, e as frequências de amostragem disponíveis são 32, 44.1 (CDs de áudio) e 48 kHz. Um MP3 que seja criado com a bitrate de 128 kbit/s resulta num ficheiro com um 1/10 do tamanho do ficheiro CD criado da fonte de áudio original. Tal é conseguido através de diversos factores que são explorados nas diferentes fases da codificação. O standard MPEG-1 não inclui uma especificação precisa para um codificador, como tal, quem pretendesse implementar o standard foi encorajado a desenvolver o seu próprio algoritmo que se adequasse à remoção de partes de informação do ficheiro de áudio, ou melhor, da sua representação obtida no domínio da frequência através da aplicação da MDCT (modified discrete cosine transform). Uma codificação comum baseia-se primeiramente numa filtragem do sinal original, passando-o do domínio do tempo para o domínio da frequência, fazendo uso de 32 bandas de frequência. A partir deste momento, não existe um só sinal, mas sim 32 componentes digitais do mesmo, tal como se tratasse de um equalizador de 32 bandas. A MDCT é agora aplicada seguida de uma quantização e de uma codificação de Huffman, construindo-se assim o bitstream codificado. Fig.6 – Codificador MP3
Durante a codificação, um máximo de 576 amostras do domínio do tempo são transformadas em amostras do domínio da frequência, cada uma representativa de uma largura de banda de 41,67Hz, isto porque a cada uma das 32 sub-bandas é aplicada a MDCT de 18 pontos. No entanto por vezes poderá este número ser reduzido para 192 amostras através do uso da mesma transformada porém desta vez com 6 pontos, tal ocorre quando existe um elevado grau de componentes não periódicas e uma magnitude mais elevada de altas frequências do que o conteúdo harmónico do ficheiro a codificar. Isto é feito para limitar a dispersão temporal do ruído de quantização que acompanha este fenómeno. Um exemplo de uma situação como a descrita seria a passagem de uma situação de quase silêncio para uma situação de sons muito percutidos. Torna-se agora relevante fazer uma descrição dos 3 blocos finais do processo de codificação, assim começando pela MDCT, esta é no fundo, uma operação matemática que aproxima um sinal (função matemática) por uma soma ponderada de funções de co-seno (funções de base) como podemos observar na seguinte equação.
Escolhendo N número de pontos de referência, a transformada cria uma função que passa por esses pontos. A utilidade da transformada reside no facto de ao se conhecer esta função, enviando os coeficientes Ai, facilmente se aferir qual a função aproximadora e também na possibilidade de utilizar blocos de tamanhos (N) diferentes consoante a relevância do excerto a codificar. Tem-se assim a possibilidade de obter quando necessária uma maior resolução temporal, N = 64, ou os blocos maiores para a generalidade das situações, N = 1024. Na saída da MDCT, as amostras encontram-se quantizadas de um modo não uniforme, que irão provocar erros e perdas nas máscaras. É então necessária a acção do bloco de quantização e codificação, no qual será usado o conhecido método de Huffman. O código de Huffman é assim aplicado para se obter os índices de quantização mais adequados, conseguindo-se desta forma uma eficiência tão elevada quanto possível. Esta codificação baseia-se em tabelas de 32 códigos e pares run-length (ou informação-passo) e é considerada entrópica, ou seja, "dispende" menos energia nas palavras mais prováveis e mais energia em informação que é raro ser enviada. A baixa entropia do codificador é obtida quando se representa informação mais provável com símbolos mais simples, e se representa a informação de menor probabilidade com símbolos mais complexos. A entropia, H(x), é então representada pela seguinte fórmula:
A entropia será máxima quando todos os m símbolos tiverem a mesma probabilidade pi e estará dentro dos seguintes limites:
O codificador tem ainda outra importante função na cadeia, esta baseia-se em coordenar o comprimento das palavras da tabela do código de Huffman de modo a manter uma taxa de transmissão constante. Tal é possível devido ao uso de um reservatório de bits. O reservatório guarda os bits que não são necessários em determinada palavra de código para depois serem usados posteriormente quando são precisos garantindo assim que o buffer nunca entre nem em overflow (excesso de fluxo de informação) ou underflow, que ocorre quando o bit-stream é apresentado ao descodificador a um ritmo constante. Como podemos agora concluir, as fases de quantização e codificação de Huffman encontram-se intimamente relacionadas, como tal, são apenas representadas por um único bloco. A descodificação por outro lado encontra-se cuidadosamente especificada no standard. A maioria dos descodificadores são “bitstream compliant” o que significa que o resultado da descodificação de um determinado ficheiro MP3, será idêntico ao de outro descodificador, dentro de um certo grau de tolerância. Os limites do resultado encontram-se delineados no ISO/IEC standard document[16]. Encontra-se de seguida ilustrado um descodificador de MP3: Fig. 7 – Descodificador de MP3 O ficheiro MP3 tem um formato standard, que consiste numa frame de 384, 576 ou 1152 amostras (depende da versão do MPEG e da layer), e todas as frames têm 32 bits de informação associada, que dizem respeito ao cabeçalho. Esse cabeçalho encontra-se ilustrado na figura 8: Fig. 8 – Cabeçalho MP3 Este cabeçalho, como seria de esperar, transporta consigo toda a informação relevante para a identificação do tipo de ficheiro por parte do descodificador de forma a facilitar o processo de descodificação. É assim importante explicar sucintamente a funcionalidade de cada uma das frames.
Fig. 9 – Diversas frames do cabeçalho MP3
Finaliza-se assim esta breve descrição do formato MP3 e das suas vertentes de codificação/descodificação. |