summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMagnus Holmgren <magnushol@gmail.com>2006-09-24 19:00:29 +0000
committerMagnus Holmgren <magnushol@gmail.com>2006-09-24 19:00:29 +0000
commit3fa5e5f5924306417c05cbc7a7f46a605c670996 (patch)
tree582869c0709cb876cec3f4a3b73a0dd56e6241a5
parent0e5bd54cbb26768a2059ed5aadd7b2c15974fe6f (diff)
downloadrockbox-3fa5e5f5924306417c05cbc7a7f46a605c670996.tar.gz
rockbox-3fa5e5f5924306417c05cbc7a7f46a605c670996.zip
Apply a bunch of simple AAC decoder optimizations. Biggest speedup is on ColdFire targets, but ARM targets benefits too. Allows realtime playback of some AAC files on Iriver targets (H1x0, H3x0). Remove support for some rarely used AAC profiles to reduce code size a bit.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11038 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/codecs/libfaad/bits.c2
-rw-r--r--apps/codecs/libfaad/cfft.c12
-rw-r--r--apps/codecs/libfaad/cfft_tab.h6
-rw-r--r--apps/codecs/libfaad/common.h2
-rw-r--r--apps/codecs/libfaad/filtbank.c7
-rw-r--r--apps/codecs/libfaad/kbd_win.h4
-rw-r--r--apps/codecs/libfaad/mdct.c2
-rw-r--r--apps/codecs/libfaad/mdct_tab.h4
-rw-r--r--apps/codecs/libfaad/sine_win.h4
-rw-r--r--apps/codecs/libfaad/specrec.c42
-rw-r--r--apps/codecs/libfaad/syntax.c18
11 files changed, 62 insertions, 41 deletions
diff --git a/apps/codecs/libfaad/bits.c b/apps/codecs/libfaad/bits.c
index e2e609edd1..65f451a8cb 100644
--- a/apps/codecs/libfaad/bits.c
+++ b/apps/codecs/libfaad/bits.c
@@ -32,7 +32,7 @@
32#include <string.h> 32#include <string.h>
33#include "bits.h" 33#include "bits.h"
34 34
35uint8_t static_buffer[1024] IBSS_ATTR; 35uint8_t static_buffer[1024];
36 36
37/* initialize buffer, call once before first getbits or showbits */ 37/* initialize buffer, call once before first getbits or showbits */
38void faad_initbits(bitfile *ld, const void *_buffer, const uint32_t buffer_size) 38void faad_initbits(bitfile *ld, const void *_buffer, const uint32_t buffer_size)
diff --git a/apps/codecs/libfaad/cfft.c b/apps/codecs/libfaad/cfft.c
index 8eec8aa85c..eecfe4bc69 100644
--- a/apps/codecs/libfaad/cfft.c
+++ b/apps/codecs/libfaad/cfft.c
@@ -960,7 +960,17 @@ cfft_info *cffti(uint16_t n)
960 cfft_info *cfft = (cfft_info*)faad_malloc(sizeof(cfft_info)); 960 cfft_info *cfft = (cfft_info*)faad_malloc(sizeof(cfft_info));
961 961
962 cfft->n = n; 962 cfft->n = n;
963 cfft->work = (complex_t*)faad_malloc(n*sizeof(complex_t)); 963
964 if (n <= 512)
965 {
966 static complex_t work_buf[512] IBSS_ATTR;
967
968 cfft->work = work_buf;
969 }
970 else
971 {
972 cfft->work = (complex_t*)faad_malloc(n*sizeof(complex_t));
973 }
964 974
965#ifndef FIXED_POINT 975#ifndef FIXED_POINT
966 cfft->tab = (complex_t*)faad_malloc(n*sizeof(complex_t)); 976 cfft->tab = (complex_t*)faad_malloc(n*sizeof(complex_t));
diff --git a/apps/codecs/libfaad/cfft_tab.h b/apps/codecs/libfaad/cfft_tab.h
index 7ab7a110ca..b26653bd38 100644
--- a/apps/codecs/libfaad/cfft_tab.h
+++ b/apps/codecs/libfaad/cfft_tab.h
@@ -34,7 +34,7 @@ extern "C" {
34 34
35#ifdef FIXED_POINT 35#ifdef FIXED_POINT
36 36
37ALIGN static const complex_t cfft_tab_512[] = 37ALIGN static const complex_t cfft_tab_512[] ICONST_ATTR =
38{ 38{
39 { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, 39 { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) },
40 { FRAC_CONST(0.999924719333649), FRAC_CONST(0.012271538376808) }, 40 { FRAC_CONST(0.999924719333649), FRAC_CONST(0.012271538376808) },
@@ -1036,7 +1036,7 @@ ALIGN static const complex_t cfft_tab_480[] =
1036}; 1036};
1037#endif 1037#endif
1038 1038
1039ALIGN static const complex_t cfft_tab_64[] = 1039ALIGN static const complex_t cfft_tab_64[] ICONST_ATTR =
1040{ 1040{
1041 { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, 1041 { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) },
1042 { FRAC_CONST(0.995184719562531), FRAC_CONST(0.098017141222954) }, 1042 { FRAC_CONST(0.995184719562531), FRAC_CONST(0.098017141222954) },
@@ -1680,7 +1680,7 @@ ALIGN static const complex_t cfft_tab_240[] =
1680 1680
1681#endif 1681#endif
1682 1682
1683ALIGN static const complex_t cfft_tab_128[] = 1683ALIGN static const complex_t cfft_tab_128[] ICONST_ATTR =
1684{ 1684{
1685 { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, 1685 { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) },
1686 { FRAC_CONST(0.998795449733734), FRAC_CONST(0.049067676067352) }, 1686 { FRAC_CONST(0.998795449733734), FRAC_CONST(0.049067676067352) },
diff --git a/apps/codecs/libfaad/common.h b/apps/codecs/libfaad/common.h
index 7ee0eda589..65d27338ae 100644
--- a/apps/codecs/libfaad/common.h
+++ b/apps/codecs/libfaad/common.h
@@ -113,7 +113,7 @@ extern struct codec_api* ci;
113 113
114 114
115// Define LC_ONLY_DECODER if you want a pure AAC LC decoder (independant of SBR_DEC and PS_DEC) 115// Define LC_ONLY_DECODER if you want a pure AAC LC decoder (independant of SBR_DEC and PS_DEC)
116//#define LC_ONLY_DECODER 116#define LC_ONLY_DECODER
117#ifdef LC_ONLY_DECODER 117#ifdef LC_ONLY_DECODER
118 #undef LD_DEC 118 #undef LD_DEC
119 #undef LTP_DEC 119 #undef LTP_DEC
diff --git a/apps/codecs/libfaad/filtbank.c b/apps/codecs/libfaad/filtbank.c
index 603e02fa86..9b1bc854ad 100644
--- a/apps/codecs/libfaad/filtbank.c
+++ b/apps/codecs/libfaad/filtbank.c
@@ -127,6 +127,7 @@ static INLINE void imdct_long(fb_info *fb, real_t *in_data, real_t *out_data, ui
127 127
128 faad_imdct(mdct, in_data, out_data); 128 faad_imdct(mdct, in_data, out_data);
129#else 129#else
130 (void) len;
130 faad_imdct(fb->mdct2048, in_data, out_data); 131 faad_imdct(fb->mdct2048, in_data, out_data);
131#endif 132#endif
132} 133}
@@ -159,7 +160,7 @@ static INLINE void mdct(fb_info *fb, real_t *in_data, real_t *out_data, uint16_t
159} 160}
160#endif 161#endif
161 162
162ALIGN real_t transf_buf[2*1024] = {0}; 163ALIGN real_t transf_buf[2*1024] IBSS_ATTR;
163 164
164void ifilter_bank(fb_info *fb, uint8_t window_sequence, uint8_t window_shape, 165void ifilter_bank(fb_info *fb, uint8_t window_sequence, uint8_t window_shape,
165 uint8_t window_shape_prev, real_t *freq_in, 166 uint8_t window_shape_prev, real_t *freq_in,
@@ -191,6 +192,8 @@ void ifilter_bank(fb_info *fb, uint8_t window_sequence, uint8_t window_shape,
191 window_long = fb->ld_window[window_shape]; 192 window_long = fb->ld_window[window_shape];
192 window_long_prev = fb->ld_window[window_shape_prev]; 193 window_long_prev = fb->ld_window[window_shape_prev];
193 } else { 194 } else {
195#else
196 (void) object_type;
194#endif 197#endif
195 window_long = fb->long_window[window_shape]; 198 window_long = fb->long_window[window_shape];
196 window_long_prev = fb->long_window[window_shape_prev]; 199 window_long_prev = fb->long_window[window_shape_prev];
@@ -359,6 +362,8 @@ void filter_bank_ltp(fb_info *fb, uint8_t window_sequence, uint8_t window_shape,
359 window_long = fb->ld_window[window_shape]; 362 window_long = fb->ld_window[window_shape];
360 window_long_prev = fb->ld_window[window_shape_prev]; 363 window_long_prev = fb->ld_window[window_shape_prev];
361 } else { 364 } else {
365#else
366 (void) object_type;
362#endif 367#endif
363 window_long = fb->long_window[window_shape]; 368 window_long = fb->long_window[window_shape];
364 window_long_prev = fb->long_window[window_shape_prev]; 369 window_long_prev = fb->long_window[window_shape_prev];
diff --git a/apps/codecs/libfaad/kbd_win.h b/apps/codecs/libfaad/kbd_win.h
index 933e6c1ded..1c3fd096ac 100644
--- a/apps/codecs/libfaad/kbd_win.h
+++ b/apps/codecs/libfaad/kbd_win.h
@@ -37,7 +37,7 @@ extern "C" {
37#pragma warning(disable:4244) 37#pragma warning(disable:4244)
38#endif 38#endif
39 39
40ALIGN static const real_t kbd_long_1024[] = 40ALIGN static const real_t kbd_long_1024[] ICONST_ATTR =
41{ 41{
42 FRAC_CONST(0.00029256153896361), 42 FRAC_CONST(0.00029256153896361),
43 FRAC_CONST(0.00042998567353047), 43 FRAC_CONST(0.00042998567353047),
@@ -2030,7 +2030,7 @@ ALIGN static const real_t kbd_long_960[] = {
2030}; 2030};
2031#endif 2031#endif
2032 2032
2033ALIGN static const real_t kbd_short_128[] = 2033ALIGN static const real_t kbd_short_128[] ICONST_ATTR =
2034{ 2034{
2035 FRAC_CONST(4.3795702929468881e-005), 2035 FRAC_CONST(4.3795702929468881e-005),
2036 FRAC_CONST(0.00011867384265436617), 2036 FRAC_CONST(0.00011867384265436617),
diff --git a/apps/codecs/libfaad/mdct.c b/apps/codecs/libfaad/mdct.c
index 158ea22205..902c3f303d 100644
--- a/apps/codecs/libfaad/mdct.c
+++ b/apps/codecs/libfaad/mdct.c
@@ -126,7 +126,7 @@ void faad_imdct(mdct_info *mdct, real_t *X_in, real_t *X_out)
126 real_t scale = 0, b_scale = 0; 126 real_t scale = 0, b_scale = 0;
127#endif 127#endif
128#endif 128#endif
129 ALIGN static complex_t Z1[512]; 129 ALIGN static complex_t Z1[512] IBSS_ATTR;
130 complex_t *sincos = mdct->sincos; 130 complex_t *sincos = mdct->sincos;
131 131
132 uint16_t N = mdct->N; 132 uint16_t N = mdct->N;
diff --git a/apps/codecs/libfaad/mdct_tab.h b/apps/codecs/libfaad/mdct_tab.h
index ce48535f63..2442a4e9c3 100644
--- a/apps/codecs/libfaad/mdct_tab.h
+++ b/apps/codecs/libfaad/mdct_tab.h
@@ -35,7 +35,7 @@ extern "C" {
35#ifdef FIXED_POINT 35#ifdef FIXED_POINT
36 36
37/* 256 (N/4) complex twiddle factors */ 37/* 256 (N/4) complex twiddle factors */
38ALIGN static const complex_t mdct_tab_2048[] = 38ALIGN static const complex_t mdct_tab_2048[] ICONST_ATTR =
39{ 39{
40 { FRAC_CONST(0.999999926465718), FRAC_CONST(0.000383495187571) }, 40 { FRAC_CONST(0.999999926465718), FRAC_CONST(0.000383495187571) },
41 { FRAC_CONST(0.999994043728986), FRAC_CONST(0.003451449920136) }, 41 { FRAC_CONST(0.999994043728986), FRAC_CONST(0.003451449920136) },
@@ -552,7 +552,7 @@ ALIGN static const complex_t mdct_tab_2048[] =
552}; 552};
553 553
554/* 64 (N/4) complex twiddle factors */ 554/* 64 (N/4) complex twiddle factors */
555ALIGN static const complex_t mdct_tab_256[] = 555ALIGN static const complex_t mdct_tab_256[] ICONST_ATTR =
556{ 556{
557 { FRAC_CONST(0.999995293809576), FRAC_CONST(0.003067956762966) }, 557 { FRAC_CONST(0.999995293809576), FRAC_CONST(0.003067956762966) },
558 { FRAC_CONST(0.999618822495179), FRAC_CONST(0.027608145778966) }, 558 { FRAC_CONST(0.999618822495179), FRAC_CONST(0.027608145778966) },
diff --git a/apps/codecs/libfaad/sine_win.h b/apps/codecs/libfaad/sine_win.h
index 38cba667f5..edd3b407f1 100644
--- a/apps/codecs/libfaad/sine_win.h
+++ b/apps/codecs/libfaad/sine_win.h
@@ -37,7 +37,7 @@ extern "C" {
37#pragma warning(disable:4244) 37#pragma warning(disable:4244)
38#endif 38#endif
39 39
40ALIGN static const real_t sine_long_1024[] = 40ALIGN static const real_t sine_long_1024[] ICONST_ATTR =
41{ 41{
42 FRAC_CONST(0.00076699031874270449), 42 FRAC_CONST(0.00076699031874270449),
43 FRAC_CONST(0.002300969151425805), 43 FRAC_CONST(0.002300969151425805),
@@ -2031,7 +2031,7 @@ ALIGN static const real_t sine_long_960[] =
2031}; 2031};
2032#endif 2032#endif
2033 2033
2034ALIGN static const real_t sine_short_128[] = 2034ALIGN static const real_t sine_short_128[] ICONST_ATTR =
2035{ 2035{
2036 FRAC_CONST(0.0061358846491544753), 2036 FRAC_CONST(0.0061358846491544753),
2037 FRAC_CONST(0.01840672990580482), 2037 FRAC_CONST(0.01840672990580482),
diff --git a/apps/codecs/libfaad/specrec.c b/apps/codecs/libfaad/specrec.c
index 6d74c77562..b457f04c2f 100644
--- a/apps/codecs/libfaad/specrec.c
+++ b/apps/codecs/libfaad/specrec.c
@@ -71,34 +71,34 @@ ALIGN static const uint8_t num_swb_480_window[] =
71}; 71};
72#endif 72#endif
73 73
74ALIGN static const uint8_t num_swb_960_window[] = 74ALIGN static const uint8_t num_swb_960_window[] ICONST_ATTR =
75{ 75{
76 40, 40, 45, 49, 49, 49, 46, 46, 42, 42, 42, 40 76 40, 40, 45, 49, 49, 49, 46, 46, 42, 42, 42, 40
77}; 77};
78 78
79ALIGN static const uint8_t num_swb_1024_window[] = 79ALIGN static const uint8_t num_swb_1024_window[] ICONST_ATTR =
80{ 80{
81 41, 41, 47, 49, 49, 51, 47, 47, 43, 43, 43, 40 81 41, 41, 47, 49, 49, 51, 47, 47, 43, 43, 43, 40
82}; 82};
83 83
84ALIGN static const uint8_t num_swb_128_window[] = 84ALIGN static const uint8_t num_swb_128_window[] ICONST_ATTR =
85{ 85{
86 12, 12, 12, 14, 14, 14, 15, 15, 15, 15, 15, 15 86 12, 12, 12, 14, 14, 14, 15, 15, 15, 15, 15, 15
87}; 87};
88 88
89ALIGN static const uint16_t swb_offset_1024_96[] = 89ALIGN static const uint16_t swb_offset_1024_96[] ICONST_ATTR =
90{ 90{
91 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 91 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56,
92 64, 72, 80, 88, 96, 108, 120, 132, 144, 156, 172, 188, 212, 240, 92 64, 72, 80, 88, 96, 108, 120, 132, 144, 156, 172, 188, 212, 240,
93 276, 320, 384, 448, 512, 576, 640, 704, 768, 832, 896, 960, 1024 93 276, 320, 384, 448, 512, 576, 640, 704, 768, 832, 896, 960, 1024
94}; 94};
95 95
96ALIGN static const uint16_t swb_offset_128_96[] = 96ALIGN static const uint16_t swb_offset_128_96[] ICONST_ATTR =
97{ 97{
98 0, 4, 8, 12, 16, 20, 24, 32, 40, 48, 64, 92, 128 98 0, 4, 8, 12, 16, 20, 24, 32, 40, 48, 64, 92, 128
99}; 99};
100 100
101ALIGN static const uint16_t swb_offset_1024_64[] = 101ALIGN static const uint16_t swb_offset_1024_64[] ICONST_ATTR =
102{ 102{
103 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 103 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56,
104 64, 72, 80, 88, 100, 112, 124, 140, 156, 172, 192, 216, 240, 268, 104 64, 72, 80, 88, 100, 112, 124, 140, 156, 172, 192, 216, 240, 268,
@@ -106,12 +106,12 @@ ALIGN static const uint16_t swb_offset_1024_64[] =
106 864, 904, 944, 984, 1024 106 864, 904, 944, 984, 1024
107}; 107};
108 108
109ALIGN static const uint16_t swb_offset_128_64[] = 109ALIGN static const uint16_t swb_offset_128_64[] ICONST_ATTR =
110{ 110{
111 0, 4, 8, 12, 16, 20, 24, 32, 40, 48, 64, 92, 128 111 0, 4, 8, 12, 16, 20, 24, 32, 40, 48, 64, 92, 128
112}; 112};
113 113
114ALIGN static const uint16_t swb_offset_1024_48[] = 114ALIGN static const uint16_t swb_offset_1024_48[] ICONST_ATTR =
115{ 115{
116 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 48, 56, 64, 72, 116 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 48, 56, 64, 72,
117 80, 88, 96, 108, 120, 132, 144, 160, 176, 196, 216, 240, 264, 292, 117 80, 88, 96, 108, 120, 132, 144, 160, 176, 196, 216, 240, 264, 292,
@@ -135,12 +135,12 @@ ALIGN static const uint16_t swb_offset_480_48[] =
135}; 135};
136#endif 136#endif
137 137
138ALIGN static const uint16_t swb_offset_128_48[] = 138ALIGN static const uint16_t swb_offset_128_48[] ICONST_ATTR =
139{ 139{
140 0, 4, 8, 12, 16, 20, 28, 36, 44, 56, 68, 80, 96, 112, 128 140 0, 4, 8, 12, 16, 20, 28, 36, 44, 56, 68, 80, 96, 112, 128
141}; 141};
142 142
143ALIGN static const uint16_t swb_offset_1024_32[] = 143ALIGN static const uint16_t swb_offset_1024_32[] ICONST_ATTR =
144{ 144{
145 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 48, 56, 64, 72, 145 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 48, 56, 64, 72,
146 80, 88, 96, 108, 120, 132, 144, 160, 176, 196, 216, 240, 264, 292, 146 80, 88, 96, 108, 120, 132, 144, 160, 176, 196, 216, 240, 264, 292,
@@ -164,7 +164,7 @@ ALIGN static const uint16_t swb_offset_480_32[] =
164}; 164};
165#endif 165#endif
166 166
167ALIGN static const uint16_t swb_offset_1024_24[] = 167ALIGN static const uint16_t swb_offset_1024_24[] ICONST_ATTR =
168{ 168{
169 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 52, 60, 68, 169 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 52, 60, 68,
170 76, 84, 92, 100, 108, 116, 124, 136, 148, 160, 172, 188, 204, 220, 170 76, 84, 92, 100, 108, 116, 124, 136, 148, 160, 172, 188, 204, 220,
@@ -187,36 +187,36 @@ ALIGN static const uint16_t swb_offset_480_24[] =
187}; 187};
188#endif 188#endif
189 189
190ALIGN static const uint16_t swb_offset_128_24[] = 190ALIGN static const uint16_t swb_offset_128_24[] ICONST_ATTR =
191{ 191{
192 0, 4, 8, 12, 16, 20, 24, 28, 36, 44, 52, 64, 76, 92, 108, 128 192 0, 4, 8, 12, 16, 20, 24, 28, 36, 44, 52, 64, 76, 92, 108, 128
193}; 193};
194 194
195ALIGN static const uint16_t swb_offset_1024_16[] = 195ALIGN static const uint16_t swb_offset_1024_16[] ICONST_ATTR =
196{ 196{
197 0, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 100, 112, 124, 197 0, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 100, 112, 124,
198 136, 148, 160, 172, 184, 196, 212, 228, 244, 260, 280, 300, 320, 344, 198 136, 148, 160, 172, 184, 196, 212, 228, 244, 260, 280, 300, 320, 344,
199 368, 396, 424, 456, 492, 532, 572, 616, 664, 716, 772, 832, 896, 960, 1024 199 368, 396, 424, 456, 492, 532, 572, 616, 664, 716, 772, 832, 896, 960, 1024
200}; 200};
201 201
202ALIGN static const uint16_t swb_offset_128_16[] = 202ALIGN static const uint16_t swb_offset_128_16[] ICONST_ATTR =
203{ 203{
204 0, 4, 8, 12, 16, 20, 24, 28, 32, 40, 48, 60, 72, 88, 108, 128 204 0, 4, 8, 12, 16, 20, 24, 28, 32, 40, 48, 60, 72, 88, 108, 128
205}; 205};
206 206
207ALIGN static const uint16_t swb_offset_1024_8[] = 207ALIGN static const uint16_t swb_offset_1024_8[] ICONST_ATTR =
208{ 208{
209 0, 12, 24, 36, 48, 60, 72, 84, 96, 108, 120, 132, 144, 156, 172, 209 0, 12, 24, 36, 48, 60, 72, 84, 96, 108, 120, 132, 144, 156, 172,
210 188, 204, 220, 236, 252, 268, 288, 308, 328, 348, 372, 396, 420, 448, 210 188, 204, 220, 236, 252, 268, 288, 308, 328, 348, 372, 396, 420, 448,
211 476, 508, 544, 580, 620, 664, 712, 764, 820, 880, 944, 1024 211 476, 508, 544, 580, 620, 664, 712, 764, 820, 880, 944, 1024
212}; 212};
213 213
214ALIGN static const uint16_t swb_offset_128_8[] = 214ALIGN static const uint16_t swb_offset_128_8[] ICONST_ATTR =
215{ 215{
216 0, 4, 8, 12, 16, 20, 24, 28, 36, 44, 52, 60, 72, 88, 108, 128 216 0, 4, 8, 12, 16, 20, 24, 28, 36, 44, 52, 60, 72, 88, 108, 128
217}; 217};
218 218
219ALIGN static const uint16_t *swb_offset_1024_window[] = 219ALIGN static const uint16_t *swb_offset_1024_window[] ICODE_ATTR =
220{ 220{
221 swb_offset_1024_96, /* 96000 */ 221 swb_offset_1024_96, /* 96000 */
222 swb_offset_1024_96, /* 88200 */ 222 swb_offset_1024_96, /* 88200 */
@@ -266,7 +266,7 @@ ALIGN static const uint16_t *swb_offset_480_window[] =
266}; 266};
267#endif 267#endif
268 268
269ALIGN static const uint16_t *swb_offset_128_window[] = 269ALIGN static const uint16_t *swb_offset_128_window[] ICODE_ATTR =
270{ 270{
271 swb_offset_128_96, /* 96000 */ 271 swb_offset_128_96, /* 96000 */
272 swb_offset_128_96, /* 88200 */ 272 swb_offset_128_96, /* 88200 */
@@ -534,7 +534,7 @@ static uint8_t quant_to_spec(NeAACDecHandle hDecoder,
534 ic_stream *ics, int16_t *quant_data, 534 ic_stream *ics, int16_t *quant_data,
535 real_t *spec_data, uint16_t frame_len) 535 real_t *spec_data, uint16_t frame_len)
536{ 536{
537 ALIGN static const real_t pow2_table[] = 537 ALIGN static const real_t pow2_table[] ICONST_ATTR =
538 { 538 {
539 COEF_CONST(1.0), 539 COEF_CONST(1.0),
540 COEF_CONST(1.1892071150027210667174999705605), /* 2^0.25 */ 540 COEF_CONST(1.1892071150027210667174999705605), /* 2^0.25 */
@@ -1049,8 +1049,8 @@ uint8_t reconstruct_channel_pair(NeAACDecHandle hDecoder, ic_stream *ics1, ic_st
1049 element *cpe, int16_t *spec_data1, int16_t *spec_data2) 1049 element *cpe, int16_t *spec_data1, int16_t *spec_data2)
1050{ 1050{
1051 uint8_t retval; 1051 uint8_t retval;
1052 ALIGN static real_t spec_coef1[1024]; 1052 ALIGN static real_t spec_coef1[1024] IBSS_ATTR;
1053 ALIGN static real_t spec_coef2[1024]; 1053 ALIGN static real_t spec_coef2[1024] IBSS_ATTR;
1054 1054
1055#ifdef PROFILE 1055#ifdef PROFILE
1056 int64_t count = faad_get_ts(); 1056 int64_t count = faad_get_ts();
diff --git a/apps/codecs/libfaad/syntax.c b/apps/codecs/libfaad/syntax.c
index 27f9b8a632..77a2e886ec 100644
--- a/apps/codecs/libfaad/syntax.c
+++ b/apps/codecs/libfaad/syntax.c
@@ -559,7 +559,7 @@ void raw_data_block(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hInfo,
559/* Table 4.4.4 and */ 559/* Table 4.4.4 and */
560/* Table 4.4.9 */ 560/* Table 4.4.9 */
561ALIGN int16_t spec_data[1024] = {0}; 561ALIGN int16_t spec_data[1024] = {0};
562element sce IBSS_ATTR; 562element sce;
563static uint8_t single_lfe_channel_element(NeAACDecHandle hDecoder, bitfile *ld, 563static uint8_t single_lfe_channel_element(NeAACDecHandle hDecoder, bitfile *ld,
564 uint8_t channel, uint8_t *tag) 564 uint8_t channel, uint8_t *tag)
565{ 565{
@@ -603,9 +603,9 @@ static uint8_t single_lfe_channel_element(NeAACDecHandle hDecoder, bitfile *ld,
603} 603}
604 604
605/* Table 4.4.5 */ 605/* Table 4.4.5 */
606ALIGN int16_t spec_data1[1024]; 606ALIGN int16_t spec_data1[1024] IBSS_ATTR;
607ALIGN int16_t spec_data2[1024]; 607ALIGN int16_t spec_data2[1024] IBSS_ATTR;
608element cpe IBSS_ATTR; 608element cpe;
609static uint8_t channel_pair_element(NeAACDecHandle hDecoder, bitfile *ld, 609static uint8_t channel_pair_element(NeAACDecHandle hDecoder, bitfile *ld,
610 uint8_t channels, uint8_t *tag) 610 uint8_t channels, uint8_t *tag)
611{ 611{
@@ -833,6 +833,8 @@ static uint8_t ics_info(NeAACDecHandle hDecoder, ic_stream *ics, bitfile *ld,
833 } 833 }
834#endif 834#endif
835 } 835 }
836#else
837 (void) common_window;
836#endif 838#endif
837 } 839 }
838 } 840 }
@@ -1166,8 +1168,8 @@ static void gain_control_data(bitfile *ld, ic_stream *ics)
1166#endif 1168#endif
1167 1169
1168#ifdef SCALABLE_DEC 1170#ifdef SCALABLE_DEC
1169ALIGN int16_t spec_data1[1024] IBSS_ATTR; 1171ALIGN int16_t spec_data1[1024];
1170ALIGN int16_t spec_data2[1024] IBSS_ATTR; 1172ALIGN int16_t spec_data2[1024];
1171/* Table 4.4.13 ASME */ 1173/* Table 4.4.13 ASME */
1172void aac_scalable_main_element(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hInfo, 1174void aac_scalable_main_element(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hInfo,
1173 bitfile *ld, program_config *pce, drc_info *drc) 1175 bitfile *ld, program_config *pce, drc_info *drc)
@@ -1610,6 +1612,8 @@ static uint8_t section_data(NeAACDecHandle hDecoder, ic_stream *ics, bitfile *ld
1610#ifdef ERROR_RESILIENCE 1612#ifdef ERROR_RESILIENCE
1611 if (hDecoder->aacSectionDataResilienceFlag) 1613 if (hDecoder->aacSectionDataResilienceFlag)
1612 sect_cb_bits = 5; 1614 sect_cb_bits = 5;
1615#else
1616 (void) hDecoder;
1613#endif 1617#endif
1614 1618
1615 ics->sect_cb[g][i] = (uint8_t)faad_getbits(ld, sect_cb_bits 1619 ics->sect_cb[g][i] = (uint8_t)faad_getbits(ld, sect_cb_bits
@@ -1797,6 +1801,8 @@ static uint8_t scale_factor_data(NeAACDecHandle hDecoder, ic_stream *ics, bitfil
1797#ifdef ERROR_RESILIENCE 1801#ifdef ERROR_RESILIENCE
1798 if (!hDecoder->aacScalefactorDataResilienceFlag) 1802 if (!hDecoder->aacScalefactorDataResilienceFlag)
1799 { 1803 {
1804#else
1805 (void) hDecoder;
1800#endif 1806#endif
1801 ret = decode_scale_factors(ics, ld); 1807 ret = decode_scale_factors(ics, ld);
1802#ifdef ERROR_RESILIENCE 1808#ifdef ERROR_RESILIENCE