aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/ac3.c
diff options
context:
space:
mode:
authorReimar Döffinger <Reimar.Doeffinger@gmx.de>2010-01-14 17:50:33 +0000
committerReimar Döffinger <Reimar.Doeffinger@gmx.de>2010-01-14 17:50:33 +0000
commit29b75f0b673d92364c57bf3926a8b9168ea0a05b (patch)
treeef79892997e0cac62f9a7df5023c271760850e8a /libavcodec/ac3.c
parent574b183d64e61d299956e76e27db57a7743ee77c (diff)
downloadffmpeg-29b75f0b673d92364c57bf3926a8b9168ea0a05b.tar.gz
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
Diffstat (limited to 'libavcodec/ac3.c')
-rw-r--r--libavcodec/ac3.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/libavcodec/ac3.c b/libavcodec/ac3.c
index 20b339741c..10d4379298 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]);