|
|
|
@ -416,17 +416,22 @@ static void calc_transform_coeffs_cpl(AC3DecodeContext *s) |
|
|
|
|
|
|
|
|
|
bin = s->start_freq[CPL_CH]; |
|
|
|
|
for (band = 0; band < s->num_cpl_bands; band++) { |
|
|
|
|
int band_start = bin; |
|
|
|
|
int band_end = bin + s->cpl_band_sizes[band]; |
|
|
|
|
for (; bin < band_end; bin++) { |
|
|
|
|
for (ch = 1; ch <= s->fbw_channels; ch++) { |
|
|
|
|
if (s->channel_in_cpl[ch]) { |
|
|
|
|
for (ch = 1; ch <= s->fbw_channels; ch++) { |
|
|
|
|
if (s->channel_in_cpl[ch]) { |
|
|
|
|
int64_t cpl_coord = s->cpl_coords[ch][band]; |
|
|
|
|
for (bin = band_start; bin < band_end; bin++) { |
|
|
|
|
s->fixed_coeffs[ch][bin] = ((int64_t)s->fixed_coeffs[CPL_CH][bin] * |
|
|
|
|
(int64_t)s->cpl_coords[ch][band]) >> 23; |
|
|
|
|
if (ch == 2 && s->phase_flags[band]) |
|
|
|
|
s->fixed_coeffs[ch][bin] = -s->fixed_coeffs[ch][bin]; |
|
|
|
|
cpl_coord) >> 23; |
|
|
|
|
} |
|
|
|
|
if (ch == 2 && s->phase_flags[band]) { |
|
|
|
|
for (bin = band_start; bin < band_end; bin++) |
|
|
|
|
s->fixed_coeffs[2][bin] = -s->fixed_coeffs[2][bin]; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
bin = band_end; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|