hardcode ff_ac3_frame_sizes table
authorJustin Ruggles <justin.ruggles@gmail.com>
Sun, 18 Mar 2007 04:53:21 +0000 (04:53 +0000)
committerJustin Ruggles <justin.ruggles@gmail.com>
Sun, 18 Mar 2007 04:53:21 +0000 (04:53 +0000)
Originally committed as revision 8435 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/ac3.c
libavcodec/ac3.h
libavcodec/ac3tab.h
libavcodec/parser.c

index 47c49c0..83c70dd 100644 (file)
@@ -200,14 +200,6 @@ void ac3_common_init(void)
         l += v;
     }
     bndtab[50] = l;
         l += v;
     }
     bndtab[50] = l;
-
-    /* generate ff_ac3_frame_sizes table */
-    for(i=0; i<38; i++) {
-        int br = ff_ac3_bitratetab[i >> 1];
-        ff_ac3_frame_sizes[i][0] = (  2*br      );
-        ff_ac3_frame_sizes[i][1] = (320*br / 147) + (i & 1);
-        ff_ac3_frame_sizes[i][2] = (  3*br      );
-    }
 }
 
 int ff_ac3_parse_header(const uint8_t buf[7], AC3HeaderInfo *hdr)
 }
 
 int ff_ac3_parse_header(const uint8_t buf[7], AC3HeaderInfo *hdr)
index 757f446..bd7e7b6 100644 (file)
@@ -89,7 +89,7 @@ typedef struct {
  */
 int ff_ac3_parse_header(const uint8_t buf[7], AC3HeaderInfo *hdr);
 
  */
 int ff_ac3_parse_header(const uint8_t buf[7], AC3HeaderInfo *hdr);
 
-extern uint16_t ff_ac3_frame_sizes[38][3];
+extern const uint16_t ff_ac3_frame_sizes[38][3];
 extern const uint8_t ff_ac3_channels[8];
 extern const uint16_t ff_ac3_freqs[3];
 extern const uint16_t ff_ac3_bitratetab[19];
 extern const uint8_t ff_ac3_channels[8];
 extern const uint16_t ff_ac3_freqs[3];
 extern const uint16_t ff_ac3_bitratetab[19];
index e72984e..b549c5b 100644 (file)
 
 /**
  * Possible frame sizes.
 
 /**
  * Possible frame sizes.
- * Generated at runtime to match ATSC A/52 Table 5.18 Frame Size Code Table.
+ * from ATSC A/52 Table 5.18 Frame Size Code Table.
  */
  */
-uint16_t ff_ac3_frame_sizes[38][3];
+const uint16_t ff_ac3_frame_sizes[38][3] = {
+    { 64,   69,   96   },
+    { 64,   70,   96   },
+    { 80,   87,   120  },
+    { 80,   88,   120  },
+    { 96,   104,  144  },
+    { 96,   105,  144  },
+    { 112,  121,  168  },
+    { 112,  122,  168  },
+    { 128,  139,  192  },
+    { 128,  140,  192  },
+    { 160,  174,  240  },
+    { 160,  175,  240  },
+    { 192,  208,  288  },
+    { 192,  209,  288  },
+    { 224,  243,  336  },
+    { 224,  244,  336  },
+    { 256,  278,  384  },
+    { 256,  279,  384  },
+    { 320,  348,  480  },
+    { 320,  349,  480  },
+    { 384,  417,  576  },
+    { 384,  418,  576  },
+    { 448,  487,  672  },
+    { 448,  488,  672  },
+    { 512,  557,  768  },
+    { 512,  558,  768  },
+    { 640,  696,  960  },
+    { 640,  697,  960  },
+    { 768,  835,  1152 },
+    { 768,  836,  1152 },
+    { 896,  975,  1344 },
+    { 896,  976,  1344 },
+    { 1024, 1114, 1536 },
+    { 1024, 1115, 1536 },
+    { 1152, 1253, 1728 },
+    { 1152, 1254, 1728 },
+    { 1280, 1393, 1920 },
+    { 1280, 1394, 1920 },
+};
 
 /**
  * Maps audio coding mode (acmod) to number of full-bandwidth channels.
 
 /**
  * Maps audio coding mode (acmod) to number of full-bandwidth channels.
index 009e3eb..ab3bf8d 100644 (file)
@@ -710,7 +710,6 @@ static int ac3_parse_init(AVCodecParserContext *s1)
     s->inbuf_ptr = s->inbuf;
     s->header_size = AC3_HEADER_SIZE;
     s->sync = ac3_sync;
     s->inbuf_ptr = s->inbuf;
     s->header_size = AC3_HEADER_SIZE;
     s->sync = ac3_sync;
-    ac3_common_init();
     return 0;
 }
 #endif
     return 0;
 }
 #endif