diff options
author | Justin Ruggles <justin.ruggles@gmail.com> | 2011-01-15 04:59:10 +0300 |
---|---|---|
committer | Justin Ruggles <justin.ruggles@gmail.com> | 2011-01-15 04:59:10 +0300 |
commit | 5bff8590f353c3a47b62c67ff40f7af4cf5b5528 (patch) | |
tree | 9b0d40c72ccba1433f674f17d171e2d1e9fc2b3a /libavcodec/ac3enc.c | |
parent | 4b90c35d74880b07c50b3392a338f0f00d10302f (diff) |
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
Diffstat (limited to 'libavcodec/ac3enc.c')
-rw-r--r-- | libavcodec/ac3enc.c | 18 |
1 files 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; |