From 986099d32356bb2c9520ae32b987e7155be55605 Mon Sep 17 00:00:00 2001 From: wm4 Date: Thu, 24 Jul 2014 15:26:07 +0200 Subject: audio: fix race condition in EOF code Don't return an EOF code if there's still buffered data. Also, don't call demux_stream_eof() in the playloop. There's probably nothing wrong with it, but it's cleaner not to use it. Also give AD_EOF its own value, so that a decoding error doesn't drain audio by causing an EOF condition. --- player/audio.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'player') diff --git a/player/audio.c b/player/audio.c index 26d9f196a3..6b2260dc89 100644 --- a/player/audio.c +++ b/player/audio.c @@ -427,7 +427,7 @@ int fill_audio_out_buffers(struct MPContext *mpctx, double endpts) return -1; } else if (res == AD_ASYNC_PLAY_DONE) return 0; - else if (demux_stream_eof(d_audio->header)) + else if (res == AD_EOF) audio_eof = true; } -- cgit v1.2.3