diff options
author | wm4 <wm4@nowhere> | 2014-11-12 17:37:03 +0100 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2014-11-12 19:30:58 +0100 |
commit | a9ece6371f7b19b3d42cd41da043e8ac575cd898 (patch) | |
tree | 10508fd0a55b3793a2b875193fa4ea5133079cc3 /player | |
parent | f0efd0b1006c3d337d619747374408bf4b896392 (diff) | |
download | mpv-a9ece6371f7b19b3d42cd41da043e8ac575cd898.tar.bz2 mpv-a9ece6371f7b19b3d42cd41da043e8ac575cd898.tar.xz |
player: simplify audio uninit on segment switches
The purpose of temporarily setting stop_play was to make the audio
uninit code to explicitly drain audio if needed. This was the only way
to do it before ao_drain() was made a separate function; now we can just
do it explicitly instead.
Diffstat (limited to 'player')
-rw-r--r-- | player/loadfile.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/player/loadfile.c b/player/loadfile.c index 2cdcc599c1..6e556a672d 100644 --- a/player/loadfile.c +++ b/player/loadfile.c @@ -252,17 +252,16 @@ bool timeline_set_part(struct MPContext *mpctx, int i, bool force) mpctx->video_offset = n->start - n->source_start; if (n->source == p->source && !force) return false; - enum stop_play_reason orig_stop_play = mpctx->stop_play; - if (!mpctx->d_video && mpctx->stop_play == KEEP_PLAYING) - mpctx->stop_play = AT_END_OF_FILE; // let audio uninit drain data + uninit_audio_chain(mpctx); uninit_video_chain(mpctx); uninit_sub_all(mpctx); if (!mpctx->opts->fixed_vo) uninit_video_out(mpctx); - if (!mpctx->opts->gapless_audio) + if (mpctx->ao && !mpctx->opts->gapless_audio) { + ao_drain(mpctx->ao); uninit_audio_out(mpctx); - mpctx->stop_play = orig_stop_play; + } if (mpctx->demuxer) { demux_stop_thread(mpctx->demuxer); |