diff options
author | Vitor Sessak <vitor1001@gmail.com> | 2009-11-04 23:33:08 +0000 |
---|---|---|
committer | Vitor Sessak <vitor1001@gmail.com> | 2009-11-04 23:33:08 +0000 |
commit | c902340599546bc84910da6094c8b3e1f29a2d7b (patch) | |
tree | 436a5fae0012d81e00fbc6e40c1b377d5924aab1 /libavcodec/mpegaudio.h | |
parent | 0c50f8e6ccda2ff0b265d36412fae103b276af2e (diff) | |
download | ffmpeg-c902340599546bc84910da6094c8b3e1f29a2d7b.tar.gz |
Reduce stack memory allocation in MP3 decoder
Originally committed as revision 20451 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/mpegaudio.h')
-rw-r--r-- | libavcodec/mpegaudio.h | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/libavcodec/mpegaudio.h b/libavcodec/mpegaudio.h index 6f1940141e..d3bf1539b2 100644 --- a/libavcodec/mpegaudio.h +++ b/libavcodec/mpegaudio.h @@ -88,7 +88,25 @@ typedef int32_t MPA_INT; #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 @@ typedef struct MPADecodeContext { 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 |