Format file MP3 terdiri dari bingkai. Setiap frame dimulai dengan sebelas "1" bit dan juga beberapa byte metadata yang mengendalikan laju bit dan mendefinisikan beberapa atribut lainnya. Setiap frame independen, dirancang sedemikian rupa untuk mendukung streaming.
Bingkai dapat memiliki CRC - pemeriksaan kesalahan. Itu opsional.
Sistem operasi kemungkinan akan mencoba lagi membaca jika menemui bad sector pada CD (perangkat keras CD memiliki kesalahan sendiri memeriksa mechansim bahkan sebelum MP3 encoder melihat sesuatu). Dengan asumsi decoder tidak berfungsi dari buffer, decoder tidak akan menerima data baru selama proses ini dan harus berhenti. Jika sistem operasi tidak dapat membaca data, itu dapat melaporkan kesalahan ke sistem operasi, yang pada akhirnya akan dilaporkan ke proses hosting encoder MP3. Tergantung pada perangkat lunak apa yang terjadi di sini.
Beberapa hal yang mungkin dapat terjadi jika data dari CD salah dibaca dan masih membuatnya ke decoder (ini mungkin tidak akan terjadi pada PC tetapi bisa di stereo mobil atau perangkat non-PC lainnya):
Dekoder MP3 mencari sebelas 1 bit tersebut untuk menemukan awal dari suatu bingkai - jika tidak menemukannya, ia mungkin akan berhenti decoding hingga bingkai berikutnya.
Jika data header buruk, mungkin memainkan frame pada bitrate yang salah karena byte yang menunjukkan bitrate mana yang mungkin salah.
Jika bit header CRC diatur dan CRC tidak cocok, decoder mungkin akan membuang frame dan tidak memainkannya. Sebagian besar file MP3 tidak memiliki set bit CRC.
Jika payload (data setelah header) salah, decoder MP3 akan mencoba memainkannya.
Tugas seorang decoder adalah mengambil data yang dikompresi dan menghasilkan data yang tidak terkompres untuk diserahkan ke level "atas". Level atas itu sebenarnya menggunakan data yang tidak terkompresi untuk menggerakkan perangkat audio. Saya akan bahaya untuk menebak sebagian besar encoders / setup driver audio memiliki buffer - dengan ukuran yang dapat dikonfigurasi - di mana decoder MP3 dapat membangun beberapa data untuk driver audio dan memungkinkan mencoba lagi membaca.
Jadi, bagaimanapun, jika decoder telah berhenti karena tidak mendapatkan data, level atas sebenarnya yang menggerakkan audio mungkin melakukan salah satu di bawah ini:
- Output tingkat atas diam. Anda akan mendengar suara audio.
- Decoder berhenti mengisi data ke dalam buffer audio, tetapi level atas terus memutar apa yang ada. Buffer audio biasanya "melingkar" yang berarti mereka tidak di-zero-out tetapi terus-menerus ditimpa dengan data baru. Anda akan mendengar loncatan yang merupakan bagian dari pemutaran audio sebelumnya.
- Tingkat atas itu pintar dan mencoba menyisipkan apa yang "harus" ada di sana. Saya tidak berpikir ini sangat umum.
Jika decoder mengeluarkan data yang buruk, Anda akan mendengar suara statis atau muncul di audio.
Referensi .