Формат файлу MP3 складається з кадрів. Кожен кадр починається з одинадцяти «1» бітів, а також пари байтів метаданих, що контролюють швидкість передачі бітів і визначають деякі інші атрибути. Кожен кадр є незалежним, він був розроблений таким чином для підтримки потокової передачі.
Кадри можуть мати CRC - перевірку помилок. Це необов’язково.
Операційна система, ймовірно, спробує повторно прочитати, якщо на компакт-диску зіткнуться погані сектори (у апаратного забезпечення CD є своя помилка при перевірці механізму, перш ніж кодер MP3 навіть нічого не побачить). Якщо припустити, що декодер не працює від буфера, декодер не отримає нових даних під час цього процесу і доведеться зупинити. Якщо операційна система не може прочитати дані, вона може повідомити про помилку в операційній системі, про що згодом буде повідомлено процес, що розміщує кодер MP3. Залежно від програмного забезпечення, що відбувається саме тут.
Декілька можливих моментів можуть трапитися, якщо дані з компакт-диска прочитані неправильно і все-таки переходять до декодера (це, мабуть, не відбудеться на ПК, але може бути в автомобільному стерео або іншому пристрої, який не є ПК):
MP3-декодер шукає ті одинадцять 1 біт, щоб знайти початок кадру - якщо він їх не знайде, він, ймовірно, припинить розшифровувати до наступного кадру.
Якщо дані заголовка погані, він може відтворювати кадр на неправильному бітрейті, оскільки байт вказує, який бітрейт може бути неправильним.
Якщо біт заголовка CRC встановлений і CRC не відповідає, декодер, ймовірно, викине кадр і не відтворить його. У більшості файлів MP3 не встановлено біт CRC.
Якщо корисне навантаження (дані після заголовка) невірно, MP3-декодер спробує відтворити його.
Завдання декодера - взяти стислі дані та генерувати нестиснуті дані для передачі на "верхній" рівень. Цей верхній рівень фактично використовує нестиснені дані для керування аудіопристроєм. Я б ризикнув здогадатися, що більшість кодерів / налаштувань драйверів аудіо мають буфер - з настроюваним розміром - де MP3-декодер може накопичувати деякі дані для аудіо-драйвера та дозволяти повторно повторити зчитування.
Отож, у будь-якому випадку, якщо декодер зупинився, оскільки він не отримує даних, верхній рівень, який фактично керує звуком, може зробити що-небудь із наведеного нижче:
- Верхній рівень виводить тишу. Ви б почули перерву в аудіо.
- Декодер перестає заповнювати дані в аудіобуфер, але верхній рівень продовжує відтворювати те, що там є. Аудіо буфери, як правило, "кругові", що означає, що вони не мають нуля, але постійно перезаписуються новими даними. Ви почуєте пропуск, який є частиною попереднього відтворення аудіо.
- Верхній рівень розумний і намагається інтерполювати те, що там повинно бути. Я не думаю, що це дуже часто.
Якщо декодер видає погані дані, ви почуєте статичне або спливне в аудіо.
Довідково .