summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNils Wallménius <nils@rockbox.org>2010-07-16 08:49:22 +0000
committerNils Wallménius <nils@rockbox.org>2010-07-16 08:49:22 +0000
commitbb22ac539b7eec73ee367e642bceacf20122d7a3 (patch)
tree4918cdc88ff5657b1a5408ea11e1e6f64e2d2a50
parent5b5275a6c9bc0ad760d6ead86e8ee7f49532989a (diff)
downloadrockbox-bb22ac539b7eec73ee367e642bceacf20122d7a3.tar.gz
rockbox-bb22ac539b7eec73ee367e642bceacf20122d7a3.zip
libwma has Huffman tables that are too big for the stack temp buffer. Make temp buffer static.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27446 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/codecs/lib/ffmpeg_bitstream.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/apps/codecs/lib/ffmpeg_bitstream.c b/apps/codecs/lib/ffmpeg_bitstream.c
index c879661c47..be0a3a11f6 100644
--- a/apps/codecs/lib/ffmpeg_bitstream.c
+++ b/apps/codecs/lib/ffmpeg_bitstream.c
@@ -288,14 +288,21 @@ static int build_table(VLC *vlc, int table_nb_bits, int nb_codes,
288 codecs use it, there's a LUT based bit reverse function for this commented 288 codecs use it, there's a LUT based bit reverse function for this commented
289 out above (bitswap_32) and an inline asm version in libtremor/codebook.c 289 out above (bitswap_32) and an inline asm version in libtremor/codebook.c
290 if we ever want this */ 290 if we ever want this */
291
292static VLCcode buf[1500]; /* worst case is wma, which has one table with 1336 entries */
293
291int init_vlc_sparse(VLC *vlc, int nb_bits, int nb_codes, 294int init_vlc_sparse(VLC *vlc, int nb_bits, int nb_codes,
292 const void *bits, int bits_wrap, int bits_size, 295 const void *bits, int bits_wrap, int bits_size,
293 const void *codes, int codes_wrap, int codes_size, 296 const void *codes, int codes_wrap, int codes_size,
294 const void *symbols, int symbols_wrap, int symbols_size, 297 const void *symbols, int symbols_wrap, int symbols_size,
295 int flags) 298 int flags)
296{ 299{
297 VLCcode buf[nb_codes+1]; /* worst case from cook seems to be nb_codes == 607 300 if (nb_codes+1 > (int)(sizeof (buf)/ sizeof (VLCcode)))
298 which would make this about 4.8k... */ 301 {
302 DEBUGF("Table is larger than temp buffer!\n");
303 return -1;
304 }
305
299 int i, j, ret; 306 int i, j, ret;
300 307
301 vlc->bits = nb_bits; 308 vlc->bits = nb_bits;