FS#5879 - Seeking backwards bug

Attached to Project: Rockbox
Opened by Andrew Cupper (snowgoon) - Thursday, 24 August 2006, 21:23 GMT
Task Type Patches
Category Music playback
Status Closed
Assigned To No-one
Operating System All players
Severity High
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No


Since 31/07/2006 seeking in long files is (more) broken. To test start playing a long track, wait until the buffer wraps, then seek backwards to a point that is no longer in the buffer, eg. the start of the track. Playback either crashes, or (sometimes for mp3) plays from the wrong seek point. Test failed with current builds, eg. 24/08/2006 and cvs build, on iAudio X5 with flac, mp3 and mpc files. The problem is that track start_pos is not incremented if the buffer wraps and overwrites existing track data already in the buffer. If the user seeks backwards to a point that has been overwritten, the code fails to detect that the seek point is no longer in the buffer.

The attached file patches playback.c to detect when the track in buffer is being overwritten (during wrapping), and updates the start_pos. It also adds a configuration option (like CODEC_SET_FILEBUF_CHUNKSIZE) to adjust the rebuffer preseek since some codecs (like musepack) do not support resync.
This task depends upon

Closed by  Magnus Holmgren (learman)
Wednesday, 30 August 2006, 15:48 GMT
Reason for closing:  Accepted
Additional comments about closing:  Patch committed (with one minor change by me). Thanks!