Das MP3-Dateiformat besteht aus Frames. Jeder Frame beginnt mit elf "1" -Bits und ein paar Byte Metadaten, die die Bitrate steuern und einige andere Attribute definieren. Jeder Frame ist unabhängig. Er wurde so konzipiert, dass er Streaming unterstützt.
Frames können einen CRC haben - eine Fehlerprüfung. Es ist optional.
Das Betriebssystem wird das Lesen wahrscheinlich erneut versuchen, wenn es auf fehlerhafte Sektoren auf einer CD stößt (CD-Hardware verfügt über einen eigenen Fehlerprüfungsmechanismus, bevor der MP3-Encoder überhaupt etwas erkennt). Angenommen, der Decoder arbeitet nicht mit einem Puffer, empfängt der Decoder während dieses Vorgangs keine neuen Daten und muss anhalten. Wenn das Betriebssystem die Daten nicht lesen kann, meldet es möglicherweise einen Fehler an das Betriebssystem, der schließlich an den Prozess gemeldet wird, der den MP3-Encoder hostet. Kommt auf die Software an, was genau hier passiert.
Einige mögliche Dinge können passieren, wenn die Daten von der CD falsch gelesen werden und trotzdem zum Decoder gelangen (dies würde wahrscheinlich nicht auf einem PC passieren, aber in einem Autoradio oder einem anderen Nicht-PC-Gerät):
Ein MP3-Decoder sucht nach diesen elf 1 Bits, um den Beginn eines Frames zu finden. Wenn er sie nicht findet, wird die Decodierung wahrscheinlich bis zum nächsten Frame aufhören.
Wenn die Kopfdaten fehlerhaft sind, wird der Frame möglicherweise mit der falschen Bitrate abgespielt, da das Byte angibt, welche Bitrate falsch ist.
Wenn das Header-CRC-Bit gesetzt ist und der CRC nicht übereinstimmt, wirft der Decoder den Frame wahrscheinlich aus und spielt ihn nicht ab. Bei den meisten MP3-Dateien ist das CRC-Bit nicht gesetzt.
Wenn die Payload (Daten hinter dem Header) falsch ist, versucht der MP3-Decoder, diese abzuspielen.
Die Aufgabe eines Decoders besteht darin, die komprimierten Daten zu übernehmen und unkomprimierte Daten zu erzeugen, die an eine "obere" Ebene übergeben werden. Diese obere Ebene verwendet tatsächlich die unkomprimierten Daten, um ein Audiogerät anzutreiben. Ich würde vermuten, dass die meisten Encoder / Audiotreiber-Setups einen Puffer mit konfigurierbarer Größe haben, in dem der MP3-Decoder Daten für den Audiotreiber aufbauen und Leseversuche ermöglichen kann.
Wenn der Decoder gestoppt wurde, weil er keine Daten erhält, kann die obere Ebene, die das Audiosignal tatsächlich steuert, eine der folgenden Aktionen ausführen:
- Oberer Pegel gibt Stille aus. Sie würden eine Tonunterbrechung hören.
- Der Decoder stoppt das Füllen von Daten in einen Audiopuffer, aber der obere Pegel spielt weiter, was vorhanden ist. Audiopuffer sind normalerweise "zirkulär", dh sie werden nicht auf Null gesetzt, sondern ständig mit neuen Daten überschrieben. Sie hören einen Sprung, der einen Teil der vorherigen Audiowiedergabe darstellt.
- Die obere Ebene ist intelligent und versucht zu interpolieren, was dort "sein sollte". Ich denke nicht, dass das sehr häufig ist.
Wenn der Decoder fehlerhafte Daten ausgibt, hören Sie statische oder knallende Audiosignale.
Referenz .