From c79689206c489b2ba449b8d21e0b5819298c949a Mon Sep 17 00:00:00 2001 From: wm4 Date: Fri, 30 May 2014 02:14:38 +0200 Subject: audio: change handling of an EOF corner case This code handles buggy AOs (even if all AOs are bug-free, it's good for robustness). Move handling of it to the AO feed thread. Now this check doesn't require magic numbers and does exactly what's it supposed to do. --- player/audio.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) (limited to 'player') diff --git a/player/audio.c b/player/audio.c index a391aeabe5..1070270dda 100644 --- a/player/audio.c +++ b/player/audio.c @@ -459,13 +459,7 @@ int fill_audio_out_buffers(struct MPContext *mpctx, double endpts) int played = write_to_ao(mpctx, &data, playflags, written_audio_pts(mpctx)); assert(played >= 0 && played <= data.samples); - if (played > 0) { - mp_audio_buffer_skip(mpctx->ao_buffer, played); - } else if (!mpctx->paused && audio_eof && ao_get_delay(ao) < .04) { - // Sanity check to avoid hanging in case current ao doesn't output - // partial chunks and doesn't check for AOPLAY_FINAL_CHUNK - signal_eof = true; - } + mp_audio_buffer_skip(mpctx->ao_buffer, played); return signal_eof ? -2 : -partial_fill; } -- cgit v1.2.3