diff options
author | Justin Ruggles <justin.ruggles@gmail.com> | 2011-03-05 00:41:49 +0300 |
---|---|---|
committer | Justin Ruggles <justin.ruggles@gmail.com> | 2011-03-05 01:40:24 +0300 |
commit | 53e35fd340d75c40395e4446b76a72bb1962899b (patch) | |
tree | e49d3e0eda35726474ff987160a6a94da249ad93 /libavcodec | |
parent | b35743ffb46558be3a90c44f24a7de5fa2c15d85 (diff) |
ac3enc: add num_rematrixing_bands to AC3EncodeContext and use it instead of the hardcoded value.
Currently it is always 4, but this change will allow it to be adjusted when
bandwidth-related features are added such as channel coupling, enhanced
channel coupling, and spectral extension.
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/ac3enc.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/libavcodec/ac3enc.c b/libavcodec/ac3enc.c index 02bc403f82..676bb5e13c 100644 --- a/libavcodec/ac3enc.c +++ b/libavcodec/ac3enc.c @@ -117,6 +117,7 @@ typedef struct AC3EncodeContext { int nb_coefs[AC3_MAX_CHANNELS]; int rematrixing; ///< determines how rematrixing strategy is calculated + int num_rematrixing_bands; ///< number of rematrixing bands /* bitrate allocation control */ int slow_gain_code; ///< slow gain code (sgaincod) @@ -305,6 +306,8 @@ static void compute_rematrixing_strategy(AC3EncodeContext *s) int blk, bnd, i; AC3Block *block, *block0; + s->num_rematrixing_bands = 4; + if (s->rematrixing & AC3_REMATRIXING_IS_STATIC) return; @@ -313,7 +316,7 @@ static void compute_rematrixing_strategy(AC3EncodeContext *s) for (blk = 0; blk < AC3_MAX_BLOCKS; blk++) { block = &s->blocks[blk]; block->new_rematrixing_strategy = !blk; - for (bnd = 0; bnd < 4; bnd++) { + for (bnd = 0; bnd < s->num_rematrixing_bands; bnd++) { /* calculate calculate sum of squared coeffs for one band in one block */ int start = ff_ac3_rematrix_band_tab[bnd]; int end = FFMIN(nb_coefs, ff_ac3_rematrix_band_tab[bnd+1]); @@ -365,7 +368,7 @@ static void apply_rematrixing(AC3EncodeContext *s) AC3Block *block = &s->blocks[blk]; if (block->new_rematrixing_strategy) flags = block->rematrixing_flags; - for (bnd = 0; bnd < 4; bnd++) { + for (bnd = 0; bnd < s->num_rematrixing_bands; bnd++) { if (flags[bnd]) { start = ff_ac3_rematrix_band_tab[bnd]; end = FFMIN(nb_coefs, ff_ac3_rematrix_band_tab[bnd+1]); @@ -785,7 +788,7 @@ static void count_frame_bits(AC3EncodeContext *s) /* stereo rematrixing */ if (s->channel_mode == AC3_CHMODE_STEREO && s->blocks[blk].new_rematrixing_strategy) { - frame_bits += 4; + frame_bits += s->num_rematrixing_bands; } for (ch = 0; ch < s->fbw_channels; ch++) { @@ -1304,7 +1307,7 @@ static void output_audio_block(AC3EncodeContext *s, int blk) put_bits(&s->pb, 1, block->new_rematrixing_strategy); if (block->new_rematrixing_strategy) { /* rematrixing flags */ - for (rbnd = 0; rbnd < 4; rbnd++) + for (rbnd = 0; rbnd < s->num_rematrixing_bands; rbnd++) put_bits(&s->pb, 1, block->rematrixing_flags[rbnd]); } } |