From 495529f7dfbaf24bfe567911ec9717bf90f6081a Mon Sep 17 00:00:00 2001 From: Justin Ruggles Date: Sun, 18 Mar 2007 04:53:21 +0000 Subject: [PATCH] hardcode ff_ac3_frame_sizes table Originally committed as revision 8435 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/ac3.c | 8 -------- libavcodec/ac3.h | 2 +- libavcodec/ac3tab.h | 43 +++++++++++++++++++++++++++++++++++++++++-- libavcodec/parser.c | 1 - 4 files changed, 42 insertions(+), 12 deletions(-) diff --git a/libavcodec/ac3.c b/libavcodec/ac3.c index 47c49c0d05..83c70ddb86 100644 --- a/libavcodec/ac3.c +++ b/libavcodec/ac3.c @@ -200,14 +200,6 @@ void ac3_common_init(void) 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) diff --git a/libavcodec/ac3.h b/libavcodec/ac3.h index 757f446572..bd7e7b611b 100644 --- a/libavcodec/ac3.h +++ b/libavcodec/ac3.h @@ -89,7 +89,7 @@ typedef struct { */ 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]; diff --git a/libavcodec/ac3tab.h b/libavcodec/ac3tab.h index e72984e170..b549c5ba9f 100644 --- a/libavcodec/ac3tab.h +++ b/libavcodec/ac3tab.h @@ -26,9 +26,48 @@ /** * 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. diff --git a/libavcodec/parser.c b/libavcodec/parser.c index 009e3ebbde..ab3bf8ddb3 100644 --- a/libavcodec/parser.c +++ b/libavcodec/parser.c @@ -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; - ac3_common_init(); return 0; } #endif