FS#12153 - Put Elapsed and Offset in PCM buffer frames.
Attached to Project:
Rockbox
Opened by Michael Sevakis (MikeS) - Saturday, 11 June 2011, 23:28 GMT
Last edited by Michael Sevakis (MikeS) - Sunday, 28 August 2011, 08:44 GMT
Opened by Michael Sevakis (MikeS) - Saturday, 11 June 2011, 23:28 GMT
Last edited by Michael Sevakis (MikeS) - Sunday, 28 August 2011, 08:44 GMT
|
DetailsHere we slice up PCM frames into about 1/20s chunks. Codecs set elapsed times and offset before the next PCM insert which associates those values with the audio data it subsequently commits to the buffer.
Codecs are modified only minimally so that they set elapsed/offset before outputting anything. Why? * Accurate position reporting of samples, especially when using the time index in an uncoventional way (as a sub-track indicator for instance). * Timing is accurate through track duration regarless of pitch changes. Now, this is still pretty prelimary. There will likely be short time-reporting glitches in the WPS when switching tracks. Crossfade is not properly converted so don't use it here! I don't want to invest too much into the current way of doing mixing to accomodate a new buffer format. I'd like Primarily I put this up early so that videogame music enthusiasts can enjoy the benefits. |
This task depends upon
Closed by Michael Sevakis (MikeS)
Sunday, 28 August 2011, 08:44 GMT
Reason for closing: Accepted
Additional comments about closing: r30366 - with acceptable solution to annoying sticky wicket
Sunday, 28 August 2011, 08:44 GMT
Reason for closing: Accepted
Additional comments about closing: r30366 - with acceptable solution to annoying sticky wicket
Crossfade now operates. Some subtle differences exist. Manual skips don't have a fade-in delay and the WPS is updated when the fade-in of the new track happens rather than immediately at the beginning of the crossfade. WPS stays in better sync with what is being heard.
One last thing to work on that I haven't yet is progress reporting glitches at track transitions, probably by suppressing updates and reenabling them at the right time.
So, gotta get that one right too.
Edit: Fix revision number