diff options
author | wm4 <wm4@nowhere> | 2014-10-05 00:13:00 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2014-10-05 00:13:00 +0200 |
commit | 6431e09fb3f1d50cfe7e586106c3f225c731f3bb (patch) | |
tree | d34c53220a33433423a0b29d0406b97e4dc92fbb /audio/out/push.c | |
parent | 0d4e245de7be910df9f1293bba1faf421bd73376 (diff) | |
download | mpv-6431e09fb3f1d50cfe7e586106c3f225c731f3bb.tar.bz2 mpv-6431e09fb3f1d50cfe7e586106c3f225c731f3bb.tar.xz |
audio/out/push: limit fallback sleep time to reasonable limits
Diffstat (limited to 'audio/out/push.c')
-rw-r--r-- | audio/out/push.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/audio/out/push.c b/audio/out/push.c index 75b4db0568..dd3a02b79a 100644 --- a/audio/out/push.c +++ b/audio/out/push.c @@ -165,8 +165,10 @@ static void drain(struct ao *ao) pthread_cond_wait(&p->wakeup_drain, &p->lock); pthread_mutex_unlock(&p->lock); - if (!ao->driver->drain) - mp_sleep_us(get_delay(ao) * 1000000); + if (!ao->driver->drain) { + double time = get_delay(ao); + mp_sleep_us(MPMIN(time, ao->buffer / (double)ao->samplerate + 1) * 1e6); + } reset(ao); } |