From 9be52d48d9137e05361dd1ffb6b1fb3677e1fb47 Mon Sep 17 00:00:00 2001 From: Justin Ruggles Date: Wed, 5 Jan 2011 16:02:08 +0000 Subject: [PATCH] Use local variables outside the inner loop in extract_exponents() to reduce accessing of structs and arrays inside the loop. Approx. 30% faster in function extract_exponents(). Originally committed as revision 26226 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/ac3enc.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/libavcodec/ac3enc.c b/libavcodec/ac3enc.c index fbf5566..e815c66 100644 --- a/libavcodec/ac3enc.c +++ b/libavcodec/ac3enc.c @@ -285,19 +285,22 @@ static void extract_exponents(AC3EncodeContext *s) for (ch = 0; ch < s->channels; ch++) { for (blk = 0; blk < AC3_MAX_BLOCKS; blk++) { AC3Block *block = &s->blocks[blk]; + uint8_t *exp = block->exp[ch]; + CoefType *coef = block->mdct_coef[ch]; + int exp_shift = block->exp_shift[ch]; for (i = 0; i < AC3_MAX_COEFS; i++) { int e; - int v = abs(SCALE_COEF(block->mdct_coef[ch][i])); + int v = abs(SCALE_COEF(coef[i])); if (v == 0) e = 24; else { - e = 23 - av_log2(v) + block->exp_shift[ch]; + e = 23 - av_log2(v) + exp_shift; if (e >= 24) { e = 24; - block->mdct_coef[ch][i] = 0; + coef[i] = 0; } } - block->exp[ch][i] = e; + exp[i] = e; } } } -- 2.7.4