comparison ac3dec.c @ 10865:bcdc5343a577 libavcodec

Use MULH instead of 64x64 multiplication, around 5% overall speedup on Intel Atom. Patch by myself and Yuriy Kaminskiy [yumkam mail ru]
author reimar
date Tue, 12 Jan 2010 23:02:07 +0000
parents f8fc0a56745e
children 621268959a5c
comparison
equal deleted inserted replaced
10864:e3f5eb016712 10865:bcdc5343a577
418 for (band = 0; band < s->num_cpl_bands; band++) { 418 for (band = 0; band < s->num_cpl_bands; band++) {
419 int band_start = bin; 419 int band_start = bin;
420 int band_end = bin + s->cpl_band_sizes[band]; 420 int band_end = bin + s->cpl_band_sizes[band];
421 for (ch = 1; ch <= s->fbw_channels; ch++) { 421 for (ch = 1; ch <= s->fbw_channels; ch++) {
422 if (s->channel_in_cpl[ch]) { 422 if (s->channel_in_cpl[ch]) {
423 int64_t cpl_coord = s->cpl_coords[ch][band]; 423 int cpl_coord = s->cpl_coords[ch][band] << 5;
424 for (bin = band_start; bin < band_end; bin++) { 424 for (bin = band_start; bin < band_end; bin++) {
425 s->fixed_coeffs[ch][bin] = ((int64_t)s->fixed_coeffs[CPL_CH][bin] * 425 s->fixed_coeffs[ch][bin] = MULH(s->fixed_coeffs[CPL_CH][bin] << 4, cpl_coord);
426 cpl_coord) >> 23;
427 } 426 }
428 if (ch == 2 && s->phase_flags[band]) { 427 if (ch == 2 && s->phase_flags[band]) {
429 for (bin = band_start; bin < band_end; bin++) 428 for (bin = band_start; bin < band_end; bin++)
430 s->fixed_coeffs[2][bin] = -s->fixed_coeffs[2][bin]; 429 s->fixed_coeffs[2][bin] = -s->fixed_coeffs[2][bin];
431 } 430 }