diff options
author | wm4 <wm4@nowhere> | 2014-08-31 14:38:47 +0200 |
---|---|---|
committer | Alessandro Ghedini <alessandro@ghedini.me> | 2014-09-01 14:48:17 +0200 |
commit | 6a355959d95a3393c58054476687017bd20ab266 (patch) | |
tree | a6e0c4763ce104010dc29507dfc0a1ce75317790 /audio | |
parent | 36bdbbe716a93c2fa213ee16e86b267cd6a207f8 (diff) | |
download | mpv-6a355959d95a3393c58054476687017bd20ab266.tar.bz2 mpv-6a355959d95a3393c58054476687017bd20ab266.tar.xz |
audio/out: prevent burning CPU when seeking while paused
The audio/video sync code in player/audio.c calls ao_reset() each time
audio decoding is entered, but the player is paused, and there would be
more than 1 sample to skip to make audio start match with video start.
This caused a wakeup feedback loop with push.c.
CC: @mpv-player/stable
Diffstat (limited to 'audio')
-rw-r--r-- | audio/out/push.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/audio/out/push.c b/audio/out/push.c index c825310e01..3f0d453153 100644 --- a/audio/out/push.c +++ b/audio/out/push.c @@ -319,7 +319,8 @@ static void *playthread(void *arg) // The most important part is that the decoder is woken up, so // that the decoder will wake up us in turn. MP_TRACE(ao, "buffer inactive.\n"); - mp_input_wakeup(ao->input_ctx); + if (!p->requested_data) + mp_input_wakeup(ao->input_ctx); pthread_cond_wait(&p->wakeup, &p->lock); } else { if (!ao->driver->wait || ao->driver->wait(ao, &p->lock) < 0) { |