[FFmpeg-cvslog] r15101 - trunk/libavcodec/eac3dec.c

jbr subversion
Sun Aug 31 05:01:56 CEST 2008


Author: jbr
Date: Sun Aug 31 05:01:56 2008
New Revision: 15101

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

Modified:
   trunk/libavcodec/eac3dec.c

Modified: trunk/libavcodec/eac3dec.c
==============================================================================
--- trunk/libavcodec/eac3dec.c	(original)
+++ trunk/libavcodec/eac3dec.c	Sun Aug 31 05:01:56 2008
@@ -420,21 +420,21 @@ int ff_eac3_parse_header(AC3DecodeContex
 
     /* 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));




More information about the ffmpeg-cvslog mailing list