O formato de arquivo MP3 consiste em quadros. Cada quadro começa com onze bits "1" e também alguns bytes de metadados controlando a taxa de bits e definindo alguns outros atributos. Cada quadro é independente, foi projetado dessa forma para suportar streaming.
Quadros podem ter um CRC - uma verificação de erro. É opcional.
O sistema operacional provavelmente tentará ler novamente se encontrar setores defeituosos em um CD (o hardware de CD tem seu próprio mecanismo de verificação de erros antes que o codificador de MP3 veja alguma coisa). Supondo que o decodificador não esteja funcionando de um buffer, o decodificador não receberá novos dados durante este processo e terá que parar. Se o sistema operacional não puder ler os dados, ele poderá relatar um erro ao sistema operacional, que será eventualmente relatado ao processo que hospeda o codificador de MP3. Depende do software o que acontece exatamente aqui.
Algumas coisas possíveis podem acontecer se os dados do CD forem lidos incorretamente e ainda chegarem ao decodificador (isso provavelmente não aconteceria em um PC, mas em um estéreo automotivo ou em outro dispositivo não-PC):
-
Um decodificador de MP3 procura esses onze bits para encontrar o início de um quadro - se ele não os encontrar, provavelmente parará de decodificar até o próximo quadro.
-
Se os dados do cabeçalho estiverem ruins, ele pode reproduzir o quadro com a taxa de bits incorreta, pois o byte indica qual taxa de bits pode estar errada.
-
Se o bit CRC do cabeçalho estiver definido e o CRC não corresponder, o decodificador provavelmente lançará o quadro e não o reproduzirá. A maioria dos arquivos MP3 não tem o conjunto de bits CRC.
-
Se a carga útil (dados após o cabeçalho) estiver errada, o decodificador de MP3 tentará reproduzi-lo.
O trabalho de um decodificador é pegar os dados comprimidos e gerar dados não compactados para entregar a um nível "superior". Na verdade, esse nível superior usa os dados não compactados para direcionar um dispositivo de áudio. Eu me arriscaria a adivinhar que a maioria dos encoders / configurações de driver de áudio tem um buffer - com um tamanho configurável - onde o decodificador de MP3 pode construir alguns dados para o driver de áudio e permitir novas leituras.
Assim, de qualquer forma, se o decodificador parou porque não está recebendo dados, o nível superior que realmente está dirigindo o áudio pode fazer o seguinte:
- O nível superior produz silêncio. Você ouviria uma pausa no áudio.
- O decodificador interrompe o preenchimento de dados em um buffer de áudio, mas o nível superior continua reproduzindo o que está lá. Os buffers de áudio são tipicamente "circulares", o que significa que eles não são zerados, mas constantemente sobrescritos com novos dados. Você ouvirá um pulo que é uma parte do áudio anterior.
- O nível superior é inteligente e tenta interpolar o que "deveria" estar lá. Eu não acho que isso seja muito comum.
Se o decodificador exibir dados incorretos, você ouvirá estáticos ou pop no áudio.
Referência .