[pulseaudio-discuss] Exponential recovering from rewinds
David Henningsson
david.henningsson at canonical.com
Fri Nov 5 06:15:31 PDT 2010
Just following up on an idea brought to my attention at the
Ubuntu/Linaro Developer Summit, and I'm not sure whether this is the
original idea or if I refined it a little myself. Anyway.
Since rewinds often come in chunks, and sometimes there are no rewinds
for a very long time, it makes sense to not fill up the entire buffer
immediately after a rewind. I propose the following algorithm:
1. After a rewind, write only 250 ms (or a configurable value) of data
to the buffer. Then go to sleep and set to wakeup 250 ms later (minus
the tsched watermark).
2. Now write 500 ms to the buffer and go to sleep.
3. Write 1 s to the buffer and go to sleep, and so on.
Continue until the entire buffer is filled, and we'll then fall back to
normal handling, or if we get a new rewind at any point, start over from
point 1.
This would enable ARM (and others) to go to low-power modes for long
periods of time, while not risking to throw away a lot of processing due
to several rewinds in a short period of time.
I briefed Lennart yesterday about this and he seemed positive to the
idea, and I guess Linaro are interested in contributing to the
implementation.
Any thoughts, comments etc?
// David
More information about the pulseaudio-discuss
mailing list