Können zwei verschiedene Decoder zwei verschiedene Sample-Ergebnisse für denselben MP3 ausgeben? Ich dekodiere eine MP3-Datei in Matlab und sie erzeugt zwei Spalten (vermutlich eine für jeden Kanal). Wenn ich die Beispieldaten mit AVAssetReader (iOS) aus derselben Datei extrahiere, erhalte ich unterschiedliche Ergebnisse. Als ich denselben Code mit einer WAV-Datei ausprobiert habe, stimmten die beiden Ergebnisse überein, sodass der Code vermutlich in Ordnung ist (obwohl das Matlab-Ergebnis einige zusätzliche leere Frames enthielt).
Wenn ich nicht wissenschaftlich zufällige Werte aus meinem AVAssetReader MP3-Ergebnis auswähle und in den Matlab-Ergebnissen nach ihnen suche, sind sie in der Regel vorhanden, aber nicht immer. Ich weiß nicht, ob dies nur Zufall ist, verschiedene Rundungsfehler oder ob sie wirklich übereinstimmen. Das Problem ist, wenn sie übereinstimmen, unterscheiden sich die umgebenden Zahlen voneinander. 0.0021
Tritt beispielsweise in beiden Ergebnissen auf, aber die umgebenden Zahlen in Matlab sind -0,0649,0,0147 usw. (die in den AVAssetReader-Ergebnissen nicht in der Nähe von 0,0021 angezeigt werden).
Was könnte diese Diskrepanz verursachen, verursacht sie einen ernsthaften Mangel an Integrität in meiner App und wie würde ich sie beheben? Vielen Dank.
quelle
Antworten:
Es ist möglich, dass zwei Decoder unterschiedliche Ergebnisse erzielen und dem Standard entsprechen. Die Norm "ISO / IEC 11172-4 (Teil 4) Konformitätsprüfung" spezifiziert zwei Klassen von Decodern: "genau" und mit "begrenzter Genauigkeit" *).
Die Genauigkeit wird gemessen, indem der decodierte Strom mit dem Referenzstrom verglichen wird (die Eingabe und Ausgabe der Referenz ist im Standard angegeben). Wenn der Effektivwert der Differenz unten liegt2−15/12−−√ Der Decoder wird als genau und falls unten eingestuft 2−11/12−−√ es wird als "begrenzte Genauigkeit" eingestuft.
Wenn Sie also unterschiedliche Decoder oder sogar denselben Decoder auf unterschiedlichen Prozessorarchitekturen verwenden möchten, müssen Sie auf diese Art von Diskrepanz bei der Ausgabe vorbereitet sein. Sie kennen Ihre Anwendung nicht oder beabsichtigen sie nicht, aber vielleicht können Sie den Standard nachahmen und auch mit RMS of Error arbeiten?
*) Ich habe keinen englischen Text des Standards vor mir, daher kann der im Standard verwendete tatsächliche Name abweichen.
quelle