simplify code and comment regarding determination whether or not AHT is used.

Originally committed as revision 15101 to svn://svn.ffmpeg.org/ffmpeg/trunk
pull/126/head
Justin Ruggles 17 years ago
parent 7d5fdf900b
commit f07fe6e78a
  1. 24
      libavcodec/eac3dec.c

@ -420,21 +420,21 @@ int ff_eac3_parse_header(AC3DecodeContext *s)
/* 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));

Loading…
Cancel
Save