diff options
author | wm4 <wm4@nowhere> | 2014-05-30 23:56:10 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2014-05-31 01:26:50 +0200 |
commit | 4fa3ffebfe41b0c4ffed6f952cc05a7c275275f4 (patch) | |
tree | 740d6a918ee93d91747e3362de24ca1e936aa6b0 /input/lirc.c | |
parent | 9c9f23eee90f1df49098080dee0c10c7b9883ea6 (diff) | |
download | mpv-4fa3ffebfe41b0c4ffed6f952cc05a7c275275f4.tar.bz2 mpv-4fa3ffebfe41b0c4ffed6f952cc05a7c275275f4.tar.xz |
audio/out/push: keep some extra buffer
So the device buffer can be refilled quickly. Fixes dropouts in certain
cases: if all data is moved from the soft buffer to the audio device
buffer, the waiting code thinks it has to enter the mode in which it
waits for new data from the decoder. This doesn't work, because the
get_space() logic tries to keep the total buffer size down. get_space()
will return 0 (or a very low value) because the device buffer is full,
and the decoder can't refill the soft buffer. But this means if the AO
buffer runs out, the device buffer can't be refilled from the soft
buffer. I guess this mess happened because the code is trying to deal
with both AOs with proper event handling, and AOs with arbitrary
behavior.
Unfortunately this increases latency, as the total buffered audio
becomes larger. There are other ways to fix this again, but not today.
Fixes #818.
Diffstat (limited to 'input/lirc.c')
0 files changed, 0 insertions, 0 deletions