summaryrefslogtreecommitdiff
path: root/libavcodec/ac3enc.c
diff options
context:
space:
mode:
authorJustin Ruggles <justin.ruggles@gmail.com>2011-01-15 01:59:10 +0000
committerJustin Ruggles <justin.ruggles@gmail.com>2011-01-15 01:59:10 +0000
commit5bff8590f353c3a47b62c67ff40f7af4cf5b5528 (patch)
tree9b0d40c72ccba1433f674f17d171e2d1e9fc2b3a /libavcodec/ac3enc.c
parent4b90c35d74880b07c50b3392a338f0f00d10302f (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.c18
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;