FS#8158 - A resumed MP3 file does not play to the end.

Attached to Project: Rockbox
Opened by Magnus Holmgren (learman) - Wednesday, 14 November 2007, 20:13 GMT
Last edited by Magnus Holmgren (learman) - Tuesday, 27 November 2007, 17:44 GMT
Task Type Bugs
Category Music playback
Status Closed
Assigned To Brandon Low (lostlogic)
Operating System Sansa e200
Severity Low
Priority Normal
Reported Version Daily build (which?)
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No


When resuming an MP3 file, the file is not (always?) played to the end. I've noticed it on 64 kbps CBR files, at 22 kHz, that were 2-3.5 MB large. For these, about 15 seconds is missing (I've only checked it exactly on one file as of yet). There's an ID3V2 tag on the files, about 2 kB large, no other tags.

If I skip back to the start of the track, the complete file is played, even after seeking towards the end.

I have not yet seen it on Vorbis files.
This task depends upon

Closed by  Magnus Holmgren (learman)
Tuesday, 27 November 2007, 17:44 GMT
Reason for closing:  Duplicate
Additional comments about closing:  Fixed by/duplicate of  FS#8092  .
Comment by Brandon Low (lostlogic) - Wednesday, 14 November 2007, 20:15 GMT
I think tihs may have to do with how the AUDIO_REBUFFER_GUESS_SIZE is applied on resumes.
Comment by Brandon Low (lostlogic) - Wednesday, 14 November 2007, 21:52 GMT
Does it (by chance) resume the same 16s early that it ends early?
Comment by Brandon Low (lostlogic) - Wednesday, 14 November 2007, 22:35 GMT
Let me know if r15627 fixes it, I have hope.
Comment by Magnus Holmgren (learman) - Friday, 16 November 2007, 05:59 GMT
Haven't really checked if it resumes early or not (but I don't think so). But the change did not fix it. It may have improved things, so that it doesn't happen as often, but I've still encountered it.
Comment by Magnus Holmgren (learman) - Saturday, 24 November 2007, 11:32 GMT
Should only happen for MP3, and perhaps WavPack, as all other formats always buffer the full file, even when resuming. Can't see any obvious causes for this in playback.c or buffering.c though. I've been unable to reproduce this in the e200 simulator; I'll test on my H140 too.
Comment by Magnus Holmgren (learman) - Sunday, 25 November 2007, 09:09 GMT
Actually, this probably is a duplicate of  FS#8092 , as I often make a small backward seek after the resume. When I re-read 8092 now, it does describe the behavior I'm seeing (I didn't quite understand what the problem was on first read of it). Removing the line 1798 in playback.c ("file_offset = offset;") should reduce the problem in my case, but it is a bit of a hack...