FS#6199 - Buffering simplifications and bug fixes

Attached to Project: Rockbox
Opened by Brandon Low (lostlogic) - Tuesday, 17 October 2006, 03:46 GMT
Task Type Patches
Category Music playback
Status Closed
Assigned To Brandon Low (lostlogic)
Operating System All players
Severity Medium
Priority High
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No


Here is a patch that should fix FS5906 as well as possibly other buffering issues, especially relating to rebuffer_and_seek. This needs to be taken through the ringer and I hope that Miika and Steve will take a look before I commit it.
This task depends upon

Closed by  Brandon Low (lostlogic)
Tuesday, 17 October 2006, 13:00 GMT
Reason for closing:  Accepted
Comment by Brandon Low (lostlogic) - Tuesday, 17 October 2006, 03:51 GMT
This removes the fill_bytesleft variable, allowing us to more completely fill the file buffer, it also simplifies the audio_clear_track_entries functionality and corrects some minor miscalculations in how buffer reading into the currently playing track is handled.

It definitely needs testing with _long_ tracks and surrounding the rebuffer_and_seek functionality (most noteably what happens when you seek backwards from a resumed track, as mentioned in 5906).
Comment by Steve Bavin (pondlife) - Tuesday, 17 October 2006, 06:30 GMT
Initial testing looks good.

Is the comment "/* Note that this function might yield(). */" still true? Maybe in the track callback function I suppose.

Where were the "minor miscalculations" - just out of interest? Were they caused by the yielding and moving targets?
Comment by Brandon Low (lostlogic) - Tuesday, 17 October 2006, 12:58 GMT
The minor miscalculations were in the overlap calculation, and they would have been very hard to actually expose, because with the 'old way' we never buffered all the way up to the playing track, but now we do.

I believe that comment is indeed now obsolete.