Module: libav Branch: master Commit: 5d47850bbd9ea70f6ab6b8eecaf3992a8c444492
Author: Michael Niedermayer <[email protected]> Committer: Justin Ruggles <[email protected]> Date: Mon Oct 29 05:21:47 2012 +0100 dcadec: skip QMF on unused channels When the extra rear channel is present but unused, the s->channel_order_tab[] value for that channel is -1. The QMF can be skipped for the extra channel, and doing so avoids an out-of-array read on s->samples_chanptr[]. Signed-off-by: Michael Niedermayer <[email protected]> Signed-off-by: Justin Ruggles <[email protected]> --- libavcodec/dcadec.c | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-) diff --git a/libavcodec/dcadec.c b/libavcodec/dcadec.c index 712a72a..325f3fe 100644 --- a/libavcodec/dcadec.c +++ b/libavcodec/dcadec.c @@ -1279,9 +1279,10 @@ static int dca_filter_channels(DCAContext *s, int block_index) for (k = 0; k < s->prim_channels; k++) { /* static float pcm_to_double[8] = { 32768.0, 32768.0, 524288.0, 524288.0, 0, 8388608.0, 8388608.0 };*/ - qmf_32_subbands(s, k, subband_samples[k], - s->samples_chanptr[s->channel_order_tab[k]], - M_SQRT1_2 / 32768.0 /* pcm_to_double[s->source_pcm_res] */); + if (s->channel_order_tab[k] >= 0) + qmf_32_subbands(s, k, subband_samples[k], + s->samples_chanptr[s->channel_order_tab[k]], + M_SQRT1_2 / 32768.0 /* pcm_to_double[s->source_pcm_res] */); } /* Down mixing */ _______________________________________________ libav-commits mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-commits
