summaryrefslogtreecommitdiff
path: root/libavcodec/ac3dec.c
diff options
context:
space:
mode:
authorJustin Ruggles <justin.ruggles@gmail.com>2009-08-05 01:00:41 +0000
committerJustin Ruggles <justin.ruggles@gmail.com>2009-08-05 01:00:41 +0000
commit603139022d32be9a168ecf57f6577cf06daeb0bf (patch)
treed1a4c3b6f3aa5ddb4f91b026cf105b4c40a6d85d /libavcodec/ac3dec.c
parentfaccfeec0edd16645f1a86725a252868b7af8539 (diff)
Use coupling band sizes instead of coupling band structure when
calculating coupling transform coefficients. Originally committed as revision 19584 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/ac3dec.c')
-rw-r--r--libavcodec/ac3dec.c14
1 files changed, 5 insertions, 9 deletions
diff --git a/libavcodec/ac3dec.c b/libavcodec/ac3dec.c
index baff415900..808274adc5 100644
--- a/libavcodec/ac3dec.c
+++ b/libavcodec/ac3dec.c
@@ -412,14 +412,11 @@ static int decode_exponents(GetBitContext *gbc, int exp_strategy, int ngrps,
*/
static void calc_transform_coeffs_cpl(AC3DecodeContext *s)
{
- int i, j, ch, bnd, subbnd;
+ int i, j, ch, bnd;
- subbnd = -1;
i = s->start_freq[CPL_CH];
for(bnd=0; bnd<s->num_cpl_bands; bnd++) {
- do {
- subbnd++;
- for(j=0; j<12; j++) {
+ for (j = 0; j < s->cpl_band_sizes[bnd]; j++,i++) {
for(ch=1; ch<=s->fbw_channels; ch++) {
if(s->channel_in_cpl[ch]) {
s->fixed_coeffs[ch][i] = ((int64_t)s->fixed_coeffs[CPL_CH][i] * (int64_t)s->cpl_coords[ch][bnd]) >> 23;
@@ -427,9 +424,7 @@ static void calc_transform_coeffs_cpl(AC3DecodeContext *s)
s->fixed_coeffs[ch][i] = -s->fixed_coeffs[ch][i];
}
}
- i++;
- }
- } while(s->cpl_band_struct[subbnd]);
+ }
}
}
@@ -884,7 +879,8 @@ static int decode_audio_block(AC3DecodeContext *s, int blk)
decode_band_structure(gbc, blk, s->eac3, 0, cpl_start_subband,
cpl_end_subband,
ff_eac3_default_cpl_band_struct,
- s->cpl_band_struct, &s->num_cpl_bands, NULL);
+ s->cpl_band_struct, &s->num_cpl_bands,
+ s->cpl_band_sizes);
} else {
/* coupling not in use */
for (ch = 1; ch <= fbw_channels; ch++) {