diff options
author | Alexey Yakovenko <waker@users.sourceforge.net> | 2014-07-29 22:08:06 +0200 |
---|---|---|
committer | Alexey Yakovenko <waker@users.sourceforge.net> | 2014-07-29 22:08:06 +0200 |
commit | efb0a36ae96456b3d66dd34cf4ad136c59dc1f85 (patch) | |
tree | 5f59fec14710bc1b11ceb232c50d48bb557ecfe1 | |
parent | 0d902e166aee102e90cad29c85003d5dcb2834b0 (diff) |
added even smarter streamer sleep logic
-rw-r--r-- | streamer.c | 7 |
1 files changed, 6 insertions, 1 deletions
@@ -1873,9 +1873,14 @@ streamer_thread (void *ctx) { // add 1ms here to compensate the rounding error // and another 1ms to buffer slightly faster then playing alloc_time -= ms+2; - if (streamer_buffering || streamer_ringbuf.remaining < STREAM_BUFFER_SIZE / 2) { + if (streamer_buffering) { alloc_time = 0; } + else if (streamer_ringbuf.remaining < STREAM_BUFFER_SIZE / 2) { + alloc_time >>= 2; // speed-up loading a little + } + + //printf ("sleep: %d, buffering: %d, buffer_starving: %d (%d/%d)\n", alloc_time, streamer_buffering, streamer_ringbuf.remaining < STREAM_BUFFER_SIZE / 2, streamer_ringbuf.remaining, STREAM_BUFFER_SIZE / 2); if (alloc_time > 0) { usleep (alloc_time * 1000); |