¿Es posible que dos decodificadores diferentes generen dos resultados de muestra diferentes para el mismo MP3? Estoy decodificando un mp3 en Matlab y produce dos columnas (presumiblemente una para cada canal). Cuando extraigo los datos de muestra del mismo archivo usando AVAssetReader (iOS), obtengo resultados diferentes. Cuando probé el mismo código con un archivo WAV, los dos resultados coincidieron, así que supongo que el código está bien (aunque el resultado de Matlab tenía algunos marcos en blanco adicionales).
Si yo, no científicamente, elijo valores aleatorios de mi resultado MP3 AVAssetReader y los busco en los resultados de Matlab, tienden a existir, pero no siempre. No sé si esto es solo una coincidencia, diferentes errores de redondeo o si realmente coinciden. El problema es que, cuando coinciden, los números circundantes difieren entre sí. Por ejemplo, 0.0021
ocurre en ambos resultados, pero los números circundantes en Matlab son -0.0649,0.0147, etc. (que no aparecen cerca de 0.0021 en los resultados de AVAssetReader).
¿Qué podría causar esta discrepancia? ¿Causa una grave falta de integridad en mi aplicación y cómo la solucionaría? Gracias.
fuente
Respuestas:
Es posible que dos decodificadores tengan resultados diferentes y cumplan con el estándar. La "prueba de conformidad estándar ISO / IEC 11172-4 (parte 4)" especifica dos clases de decodificadores: "exactos" y con "precisión limitada" *).
La precisión se mide comparando la secuencia decodificada con la secuencia de referencia (la entrada y la salida de referencia se especifican en el estándar). Si el RMS de diferencia es inferior2- 15/ /12--√ el decodificador se clasifica como preciso y si está debajo 2- 11/ /12--√ se clasifica como "de precisión limitada".
Entonces, si va a usar diferentes decodificadores o incluso el mismo decodificador en diferentes arquitecturas de procesador, debe estar preparado para este tipo de discrepancia en la salida. ¿No conoce su aplicación o intención, pero tal vez pueda imitar el estándar y trabajar también con RMS de error?
*) No tengo el texto del estándar en inglés frente a mí, por lo que el nombre real utilizado en el estándar puede ser diferente.
fuente