Mercurial > libavcodec.hg
changeset 7755:1c0e498ac7bd libavcodec
simplify code and comment regarding determination whether or not AHT is used.
author | jbr |
---|---|
date | Sun, 31 Aug 2008 03:01:56 +0000 |
parents | b7c59017beb8 |
children | 2994fe74068f |
files | eac3dec.c |
diffstat | 1 files changed, 12 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/eac3dec.c Sun Aug 31 02:58:21 2008 +0000 +++ b/eac3dec.c Sun Aug 31 03:01:56 2008 +0000 @@ -420,21 +420,21 @@ /* determine which channels use AHT */ if (parse_aht_info) { - /* AHT is only available when there are 6 blocks in the frame. - The coupling channel can only use AHT when coupling is in use for - all blocks. - reference: Section E3.3.2 Bit Stream Helper Variables */ + /* For AHT to be used, all non-zero blocks must reuse exponents from + the first block. Furthermore, for AHT to be used in the coupling + channel, all blocks must use coupling and use the same coupling + strategy. */ s->channel_uses_aht[CPL_CH]=0; for (ch = (num_cpl_blocks != 6); ch <= s->channels; ch++) { - int nchregs = 0; - for (blk = 0; blk < 6; blk++) { - if (ch) - nchregs += (s->exp_strategy[blk][ch] != EXP_REUSE); - else - nchregs += s->cpl_strategy_exists[blk] || - (s->exp_strategy[blk][CPL_CH] != EXP_REUSE); + int use_aht = 1; + for (blk = 1; blk < 6; blk++) { + if ((s->exp_strategy[blk][ch] != EXP_REUSE) || + (!ch && s->cpl_strategy_exists[blk])) { + use_aht = 0; + break; + } } - s->channel_uses_aht[ch] = (nchregs == 1) && get_bits1(gbc); + s->channel_uses_aht[ch] = use_aht && get_bits1(gbc); } } else { memset(s->channel_uses_aht, 0, sizeof(s->channel_uses_aht));