summaryrefslogtreecommitdiffstats
path: root/audio
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2014-10-05 00:13:00 +0200
committerwm4 <wm4@nowhere>2014-10-05 00:13:00 +0200
commit6431e09fb3f1d50cfe7e586106c3f225c731f3bb (patch)
treed34c53220a33433423a0b29d0406b97e4dc92fbb /audio
parent0d4e245de7be910df9f1293bba1faf421bd73376 (diff)
downloadmpv-6431e09fb3f1d50cfe7e586106c3f225c731f3bb.tar.bz2
mpv-6431e09fb3f1d50cfe7e586106c3f225c731f3bb.tar.xz
audio/out/push: limit fallback sleep time to reasonable limits
Diffstat (limited to 'audio')
-rw-r--r--audio/out/push.c6
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);
}