diff options
| author | Jeff Epler <jepler@gmail.com> | 2019-12-13 15:20:48 -0600 |
|---|---|---|
| committer | Jeff Epler <jepler@gmail.com> | 2019-12-13 18:31:12 -0600 |
| commit | 91a1706160aa653cb00c7910b0930df679bcdd21 (patch) | |
| tree | 4dc7ab2940122be7063714eece25564e22a4cf3b /shared-module/audiomp3 | |
| parent | bf9b7e7ece6186b2fb7716323fba8ef24315cb47 (diff) | |
MP3: look harder for frame info
Apparently sometimes, a proper "frame info" block is not found after
a "sync word". Keep looking for one as needed, instead of giving up
after one try.
This was one reason that the "bartlebeats" mp3s would not play.
Diffstat (limited to 'shared-module/audiomp3')
| -rw-r--r-- | shared-module/audiomp3/MP3File.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/shared-module/audiomp3/MP3File.c b/shared-module/audiomp3/MP3File.c index 789d75e0f..0aa4f24a6 100644 --- a/shared-module/audiomp3/MP3File.c +++ b/shared-module/audiomp3/MP3File.c @@ -139,7 +139,15 @@ STATIC bool mp3file_find_sync_word(audiomp3_mp3file_obj_t* self) { } STATIC bool mp3file_get_next_frame_info(audiomp3_mp3file_obj_t* self, MP3FrameInfo* fi) { - int err = MP3GetNextFrameInfo(self->decoder, fi, READ_PTR(self)); + int err; + do { + err = MP3GetNextFrameInfo(self->decoder, fi, READ_PTR(self)); + if (err == ERR_MP3_NONE) { + break; + } + CONSUME(self, 1); + mp3file_find_sync_word(self); + } while (!self->eof); return err == ERR_MP3_NONE; } |
