Commit 1e3feb69 authored by jbr's avatar jbr

Rearrange loop structure for approx. 35-50% faster calc_transform_coeffs_cpl()

depending on content.


git-svn-id: file:///var/local/repositories/ffmpeg/trunk@20055 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b
parent f1845fd0
...@@ -416,17 +416,22 @@ static void calc_transform_coeffs_cpl(AC3DecodeContext *s) ...@@ -416,17 +416,22 @@ static void calc_transform_coeffs_cpl(AC3DecodeContext *s)
bin = s->start_freq[CPL_CH]; bin = s->start_freq[CPL_CH];
for (band = 0; band < s->num_cpl_bands; band++) { for (band = 0; band < s->num_cpl_bands; band++) {
int band_start = bin;
int band_end = bin + s->cpl_band_sizes[band]; int band_end = bin + s->cpl_band_sizes[band];
for (; bin < band_end; bin++) { for (ch = 1; ch <= s->fbw_channels; ch++) {
for (ch = 1; ch <= s->fbw_channels; ch++) { if (s->channel_in_cpl[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] * s->fixed_coeffs[ch][bin] = ((int64_t)s->fixed_coeffs[CPL_CH][bin] *
(int64_t)s->cpl_coords[ch][band]) >> 23; cpl_coord) >> 23;
if (ch == 2 && s->phase_flags[band]) }
s->fixed_coeffs[ch][bin] = -s->fixed_coeffs[ch][bin]; 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;
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment