O formato do arquivo MP3 consiste em quadros. Cada quadro começa com onze bits "1" e também alguns bytes de metadados que controlam a taxa de bits e definem alguns outros atributos. Cada quadro é independente, foi projetado dessa maneira para suportar o streaming.
Os quadros podem ter um CRC - uma verificação de erro. É opcional.
O sistema operacional provavelmente tentará novamente a leitura se encontrar setores defeituosos em um CD (o hardware do CD possui seu próprio mecanismo de verificação de erros antes que o codificador MP3 veja alguma coisa). Supondo que o decodificador não esteja funcionando com um buffer, o decodificador não receberá novos dados durante esse processo e precisará parar. Se o sistema operacional não puder ler os dados, ele poderá relatar um erro no sistema operacional, o qual acabará sendo relatado ao processo que hospeda o codificador 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 aparelho de som de carro ou outro dispositivo que não seja o PC):
Um decodificador de MP3 procura esses onze bits para encontrar o início de um quadro - se não os encontrar, provavelmente parará de decodificar até o próximo quadro.
Se os dados do cabeçalho estiverem incorretos, ele poderá reproduzir o quadro na taxa de bits incorreta, pois o byte indica qual taxa de bits pode estar incorreta.
Se o bit CRC do cabeçalho estiver definido e o CRC não corresponder, o decodificador provavelmente jogará o quadro para fora e não o reproduzirá. A maioria dos arquivos MP3 não possui o bit CRC definido.
Se a carga (dados após o cabeçalho) estiver incorreta, o decodificador de MP3 tentará reproduzi-lo.
O trabalho de um decodificador é levar os dados compactados e gerar dados não compactados para passar para um nível "superior". Na verdade, esse nível superior usa os dados não compactados para conduzir um dispositivo de áudio. Eu arriscaria supor que a maioria das configurações de codificadores / drivers de áudio possui um buffer - com um tamanho configurável - em que o decodificador MP3 pode acumular alguns dados para o driver de áudio e permitir a repetição de leituras.
Portanto, se o decodificador parou porque não está obtendo dados, o nível superior que realmente está dirigindo o áudio pode fazer o seguinte:
- Nível superior gera silêncio. Você ouviria uma interrupção no áudio.
- O decodificador para de preencher 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 substituídos por novos dados. Você ouvirá um pular que é uma parte da reprodução de áudio anterior.
- O nível superior é inteligente e tenta interpolar o que "deveria" estar lá. Eu não acho isso muito comum.
Se o decodificador emitir dados incorretos, você ouvirá estática ou aparecerá no áudio.
Referência .