diff options
author | wm4 <wm4@nowhere> | 2014-03-05 18:01:40 +0100 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2014-03-05 18:02:41 +0100 |
commit | d268d896d94064ecc980bc3be0c46e975cda7a3d (patch) | |
tree | f76a156b86a76c7bc46c3841f20b3822d8cdccea /options | |
parent | 5b3fd09908d82ff1215c35e32e5cca4c83c6ffb7 (diff) | |
download | mpv-d268d896d94064ecc980bc3be0c46e975cda7a3d.tar.bz2 mpv-d268d896d94064ecc980bc3be0c46e975cda7a3d.tar.xz |
ao_jack: fix termination on the end of file
The player didn't quit when the end of a file was reached. The reason
for this is that jack reported a constant audio delay even when all
audio was done playing. Whether that was recognized as EOF by the player
depended whether the exact value was higher or lower than the player's
threshhold for what it considers no more audio.
get_delay() should return amount of time it takes until the last sample
written to the audio buffer reaches the speaker. Therefore, we have to
track the estimated time when the last sample is done, and subtract it
from the calculated latency. Basically, the latency is the only amount
of time left in the delay, and it should go towards 0 as audio reaches
ths speakers.
I'm not sure if this is correct, but at least it solves the problem. One
suspicious thing is that we use system time to estimate the end of the
audio time. Maybe using jack_frame_time() would be more correct. But
apart from this, there doesn't seem to be a better way to handle this.
Diffstat (limited to 'options')
0 files changed, 0 insertions, 0 deletions