summaryrefslogtreecommitdiffstats
path: root/audio/decode/dec_audio.c
diff options
context:
space:
mode:
authorMartin Herkt <lachs0r@srsfckn.biz>2016-11-20 18:15:08 +0100
committerMartin Herkt <lachs0r@srsfckn.biz>2016-11-20 18:15:08 +0100
commit8700700de8a4103724796077034f7f254ad974bc (patch)
tree2fce4dee518a202c45c3f16567db36edc92ed914 /audio/decode/dec_audio.c
parente6b85c91700bee0ddc92e98a30d5021691bd6f65 (diff)
parenteafc273d2c2ae6d247d741202e58ca23dc938cb2 (diff)
downloadmpv-8700700de8a4103724796077034f7f254ad974bc.tar.bz2
mpv-8700700de8a4103724796077034f7f254ad974bc.tar.xz
Merge branch 'master' into release/current
Diffstat (limited to 'audio/decode/dec_audio.c')
-rw-r--r--audio/decode/dec_audio.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/audio/decode/dec_audio.c b/audio/decode/dec_audio.c
index 3028d9988e..39e867cf42 100644
--- a/audio/decode/dec_audio.c
+++ b/audio/decode/dec_audio.c
@@ -257,12 +257,15 @@ void audio_work(struct dec_audio *da)
struct demux_packet *new_segment = da->new_segment;
da->new_segment = NULL;
- // Could avoid decoder reinit; would still need flush.
- da->codec = new_segment->codec;
- if (da->ad_driver)
- da->ad_driver->uninit(da);
- da->ad_driver = NULL;
- audio_init_best_codec(da);
+ if (da->codec == new_segment->codec) {
+ audio_reset_decoding(da);
+ } else {
+ da->codec = new_segment->codec;
+ if (da->ad_driver)
+ da->ad_driver->uninit(da);
+ da->ad_driver = NULL;
+ audio_init_best_codec(da);
+ }
da->start = new_segment->start;
da->end = new_segment->end;