From 9bd1d79584c6f99ec12c85c458eaa9ca826b2d12 Mon Sep 17 00:00:00 2001 From: foo86 Date: Mon, 23 May 2016 18:41:27 +0300 Subject: [PATCH] avcodec/dca_exss: always update downmix flags Fixes potential parsing failure when total number of channels indicated by EXSS asset descriptor decreases mid-stream and stale embedded downmix flags are referenced. Signed-off-by: Michael Niedermayer --- libavcodec/dca_exss.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/libavcodec/dca_exss.c b/libavcodec/dca_exss.c index 87b2f42afb..28f138f404 100644 --- a/libavcodec/dca_exss.c +++ b/libavcodec/dca_exss.c @@ -112,12 +112,10 @@ static int parse_descriptor(DCAExssParser *s, DCAExssAsset *asset) int nspeakers[8]; // Embedded stereo flag - if (asset->nchannels_total > 2) - asset->embedded_stereo = get_bits1(&s->gb); + asset->embedded_stereo = asset->nchannels_total > 2 && get_bits1(&s->gb); // Embedded 6 channels flag - if (asset->nchannels_total > 6) - asset->embedded_6ch = get_bits1(&s->gb); + asset->embedded_6ch = asset->nchannels_total > 6 && get_bits1(&s->gb); // Speaker mask enabled flag if (asset->spkr_mask_enabled = get_bits1(&s->gb)) {