diff options
author | Justin Ruggles <justin.ruggles@gmail.com> | 2010-12-14 14:52:53 +0000 |
---|---|---|
committer | Justin Ruggles <justin.ruggles@gmail.com> | 2010-12-14 14:52:53 +0000 |
commit | 152cc52803222e18aaf808b4903c6960fd565aac (patch) | |
tree | ef02f66eeaa4a4943e557a6193aea7e2b5e0761d /libavcodec/ac3enc.c | |
parent | 98f6ee445369ce0983be19bf4524e4cfe20fec6e (diff) | |
download | ffmpeg-152cc52803222e18aaf808b4903c6960fd565aac.tar.gz |
Separate functionally different calculations in ac3_encode_frame().
Originally committed as revision 25988 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/ac3enc.c')
-rw-r--r-- | libavcodec/ac3enc.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/libavcodec/ac3enc.c b/libavcodec/ac3enc.c index a6353cc0f8..f6cbbe726c 100644 --- a/libavcodec/ac3enc.c +++ b/libavcodec/ac3enc.c @@ -1114,9 +1114,8 @@ static int ac3_encode_frame(AVCodecContext *avctx, AC3_BLOCK_SIZE * sizeof(planar_samples[0][0])); } - frame_bits = 0; + /* apply MDCT */ for (ch = 0; ch < s->channels; ch++) { - /* fixed mdct to the six sub blocks & exponent computation */ for (blk = 0; blk < AC3_MAX_BLOCKS; blk++) { int16_t *input_samples = &planar_samples[ch][blk * AC3_BLOCK_SIZE]; @@ -1137,7 +1136,12 @@ static int ac3_encode_frame(AVCodecContext *avctx, /* do the MDCT */ mdct512(mdct_coef[blk][ch], windowed_samples); + } + } + /* extract exponents */ + for (ch = 0; ch < s->channels; ch++) { + for (blk = 0; blk < AC3_MAX_BLOCKS; blk++) { /* compute "exponents". We take into account the normalization there */ for (i = 0; i < AC3_MAX_COEFS; i++) { int e; @@ -1154,9 +1158,16 @@ static int ac3_encode_frame(AVCodecContext *avctx, exp[blk][ch][i] = e; } } + } + /* compute exponent strategies */ + for (ch = 0; ch < s->channels; ch++) { compute_exp_strategy_ch(exp_strategy, exp, ch, ch == s->lfe_channel); + } + /* encode exponents */ + frame_bits = 0; + for (ch = 0; ch < s->channels; ch++) { /* compute the exponents as the decoder will see them. The EXP_REUSE case must be handled carefully : we select the min of the exponents */ |