Mercurial > libavcodec.hg
diff mpegaudio.h @ 10494:ead8d96926c4 libavcodec
Reduce stack memory allocation in MP3 decoder
author | vitor |
---|---|
date | Wed, 04 Nov 2009 23:33:08 +0000 |
parents | 899237b1961f |
children | 34a65026fa06 |
line wrap: on
line diff
--- a/mpegaudio.h Wed Nov 04 19:29:29 2009 +0000 +++ b/mpegaudio.h Wed Nov 04 23:33:08 2009 +0000 @@ -88,7 +88,25 @@ #define BACKSTEP_SIZE 512 #define EXTRABYTES 24 -struct GranuleDef; +/* layer 3 "granule" */ +typedef struct GranuleDef { + uint8_t scfsi; + int part2_3_length; + int big_values; + int global_gain; + int scalefac_compress; + uint8_t block_type; + uint8_t switch_point; + int table_select[3]; + int subblock_gain[3]; + uint8_t scalefac_scale; + uint8_t count1table_select; + int region_size[3]; /* number of huffman codes in each region */ + int preflag; + int short_start, long_end; /* long/short band indexes */ + uint8_t scale_factors[40]; + int32_t sb_hybrid[SBLIMIT * 18]; /* 576 samples */ +} GranuleDef; #define MPA_DECODE_HEADER \ int frame_size; \ @@ -118,6 +136,7 @@ int synth_buf_offset[MPA_MAX_CHANNELS]; DECLARE_ALIGNED_16(int32_t, sb_samples[MPA_MAX_CHANNELS][36][SBLIMIT]); int32_t mdct_buf[MPA_MAX_CHANNELS][SBLIMIT * 18]; /* previous samples, for layer 3 MDCT */ + GranuleDef granules[2][2]; /* Used in Layer 3 */ #ifdef DEBUG int frame_count; #endif