Browse Source

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 <michaelni@gmx.at>
Signed-off-by: Justin Ruggles <justin.ruggles@gmail.com>
tags/n1.1
Michael Niedermayer Justin Ruggles 13 years ago
parent
commit
5d47850bbd
1 changed files with 4 additions and 3 deletions
  1. +4
    -3
      libavcodec/dcadec.c

+ 4
- 3
libavcodec/dcadec.c View File

@@ -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 */


Loading…
Cancel
Save