From: Reimar Döffinger Date: Thu, 14 Jan 2010 17:50:33 +0000 (+0000) Subject: Change code so it uses 2 adds instead of one FFABS. X-Git-Tag: v0.6~1939 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=29b75f0b673d92364c57bf3926a8b9168ea0a05b;p=platform%2Fupstream%2Flibav.git Change code so it uses 2 adds instead of one FFABS. About 1% faster ff_ac3_bit_alloc_calc_psd on Intel Atom, overall speedup not measurable though. Should have a bigger effect on systems without cmov or with very slow cmov. Originally committed as revision 21214 to svn://svn.ffmpeg.org/ffmpeg/trunk --- diff --git a/libavcodec/ac3.c b/libavcodec/ac3.c index 20b3397..10d4379 100644 --- a/libavcodec/ac3.c +++ b/libavcodec/ac3.c @@ -112,9 +112,10 @@ void ff_ac3_bit_alloc_calc_psd(int8_t *exp, int start, int end, int16_t *psd, int v = psd[bin++]; int band_end = FFMIN(band_start_tab[band+1], end); for (; bin < band_end; bin++) { + int max = FFMAX(v, psd[bin]); /* logadd */ - int adr = FFMIN(FFABS(v - psd[bin]) >> 1, 255); - v = FFMAX(v, psd[bin]) + ff_ac3_log_add_tab[adr]; + int adr = FFMIN(max - ((v + psd[bin] + 1) >> 1), 255); + v = max + ff_ac3_log_add_tab[adr]; } band_psd[band++] = v; } while (end > band_start_tab[band]);