Я получаю пару сообщений об ошибках при использовании mpglib
для декодирования данных MP3 с использованием среды библиотеки libmp3lame
.
error(#1): hip: Невозможно перемотать поток на 74 бита назад!
error(#2): hip: проблема с битовым потоком, повторная синхронизация пропускает 10 байт...
Примечание. В сообщении "повторная синхронизация" указано 10 байтов, то есть 74 бита с округлением в большую сторону: (74 + 7) / 8 = 10
.
Мой код декодера MP3 соответствует коду в интерфейсном инструменте LAME (в основном frontend/lame_main.c и frontend/get_audio.c).
Заголовок не генерирует ошибок, и я использую до 100 байтов в соответствии с интерфейсным инструментом (см. функцию lame_decode_initfile()
в файле get_audio.c
). разница и... не совсем.
Ошибка возникает, когда я начинаю передавать данные MP3 после анализа заголовка.
Есть идеи, почему я получаю эти сообщения об ошибках?
P.S. когда я декодирую с помощью хромого инструмента командной строки, я не получаю ошибку.
$ lame --verbose --decode test.mp3 test-lame.wav
input: test.mp3 (44.1 kHz, 2 channels, MPEG-1 Layer III)
output: test-lame.wav (16 bit, Microsoft WAVE)
skipping initial 529 samples (encoder+decoder delay)
Frame# 87426/88167 168 kbps MS
Хотя кажется, что между количеством кадров есть несоответствие, но я предполагаю, что это связано с тем, что 88167 было оценочным, а не известным количеством выборок.