FS#6479 - Compressed audio watermark calculation is wrong for high bitrate formats.

Attached to Project: Rockbox
Opened by Nils Wallménius (nls) - Wednesday, 27 December 2006, 20:09 GMT
Last edited by Thomas Martitz (kugel.) - Sunday, 25 January 2009, 23:41 GMT
Task Type Bugs
Category Music playback
Status Closed
Assigned To No-one
Operating System All players
Severity Low
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No


The compressed audio buffer watermark calculation does not take the bitrate of the audio into account. This makes the watermark too low for high bitrate formats such as flac and therefore can cause a skip in music playback when the buffer has to be refilled, especially if the disk is powered down wich makes the spin up time slightly longer.
This task depends upon

Closed by  Thomas Martitz (kugel.)
Sunday, 25 January 2009, 23:41 GMT
Reason for closing:  Fixed
Additional comments about closing:  r19743 remade watermarks
Comment by Mark Arigo (lowlight) - Tuesday, 02 January 2007, 17:33 GMT
Try increasing the "Anti-Skip Buffer" which increases the default watermark.

In reviewing the code, it appears that the watermark calculation does use the current track's bitrate. However, the watermark does not appear to be updated for each track. It looks like it gets set when the codec is loaded and when new tracks are loaded, but the calculation is based on the current track. I guess a solution would be to have the codec update the watermark for each new track and take that calculation out of the playback code.
Comment by Steve Bavin (pondlife) - Wednesday, 03 January 2007, 13:00 GMT
Could this perhaps explain the reported cases where buffering never seems to stop with low bitrate files? Or is that a seperate problem where the audio buffer still isn't full after buffering the allowed 32 tracks..?
Comment by Brandon Low (lostlogic) - Wednesday, 24 October 2007, 18:31 GMT
It definitely seems reasonable, since we set the anti-skip buffer in seconds, to have some kind of average bitrate for all files currently buffered which lets us update the watermark setting.