From 5bff8590f353c3a47b62c67ff40f7af4cf5b5528 Mon Sep 17 00:00:00 2001 From: Justin Ruggles Date: Sat, 15 Jan 2011 01:59:10 +0000 Subject: [PATCH] Simplify compute_exp_strategy() by passing a pointer to all exponents and exponent strategies for a single channel to compute_exp_strategy_ch(). This allows for removal of the temporary pointer arrays. Originally committed as revision 26356 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/ac3enc.c | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/libavcodec/ac3enc.c b/libavcodec/ac3enc.c index a9552568c4..904bd8267c 100644 --- a/libavcodec/ac3enc.c +++ b/libavcodec/ac3enc.c @@ -441,7 +441,7 @@ static void extract_exponents(AC3EncodeContext *s) * Calculate exponent strategies for all blocks in a single channel. */ static void compute_exp_strategy_ch(AC3EncodeContext *s, uint8_t *exp_strategy, - uint8_t **exp) + uint8_t *exp) { int blk, blk1; int exp_diff; @@ -449,12 +449,14 @@ static void compute_exp_strategy_ch(AC3EncodeContext *s, uint8_t *exp_strategy, /* estimate if the exponent variation & decide if they should be reused in the next frame */ exp_strategy[0] = EXP_NEW; + exp += AC3_MAX_COEFS; for (blk = 1; blk < AC3_MAX_BLOCKS; blk++) { - exp_diff = s->dsp.sad[0](NULL, exp[blk], exp[blk-1], 16, 16); + exp_diff = s->dsp.sad[0](NULL, exp, exp - AC3_MAX_COEFS, 16, 16); if (exp_diff > EXP_DIFF_THRESHOLD) exp_strategy[blk] = EXP_NEW; else exp_strategy[blk] = EXP_REUSE; + exp += AC3_MAX_COEFS; } emms_c(); @@ -482,20 +484,10 @@ static void compute_exp_strategy_ch(AC3EncodeContext *s, uint8_t *exp_strategy, */ static void compute_exp_strategy(AC3EncodeContext *s) { - uint8_t *exp1[AC3_MAX_CHANNELS][AC3_MAX_BLOCKS]; - uint8_t exp_str1[AC3_MAX_CHANNELS][AC3_MAX_BLOCKS]; int ch, blk; for (ch = 0; ch < s->fbw_channels; ch++) { - for (blk = 0; blk < AC3_MAX_BLOCKS; blk++) { - exp1[ch][blk] = s->blocks[blk].exp[ch]; - exp_str1[ch][blk] = s->exp_strategy[ch][blk]; - } - - compute_exp_strategy_ch(s, exp_str1[ch], exp1[ch]); - - for (blk = 0; blk < AC3_MAX_BLOCKS; blk++) - s->exp_strategy[ch][blk] = exp_str1[ch][blk]; + compute_exp_strategy_ch(s, s->exp_strategy[ch], s->blocks[0].exp[ch]); } if (s->lfe_on) { ch = s->lfe_channel;