summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/codecs/Tremor/bitwise.c18
-rw-r--r--apps/codecs/Tremor/block.c1
-rw-r--r--apps/codecs/Tremor/floor0.c10
-rw-r--r--apps/codecs/Tremor/floor1.c34
-rw-r--r--apps/codecs/Tremor/framing.c5
-rw-r--r--apps/codecs/Tremor/lsp_lookup.h10
-rw-r--r--apps/codecs/Tremor/mapping0.c3
-rw-r--r--apps/codecs/Tremor/mdct.c1
-rw-r--r--apps/codecs/Tremor/ogg.h5
-rw-r--r--apps/codecs/Tremor/registry.c6
-rw-r--r--apps/codecs/Tremor/res012.c8
-rw-r--r--apps/codecs/Tremor/synthesis.c1
-rw-r--r--apps/codecs/Tremor/vorbisfile.c4
13 files changed, 67 insertions, 39 deletions
diff --git a/apps/codecs/Tremor/bitwise.c b/apps/codecs/Tremor/bitwise.c
index 7b6682720a..743389b008 100644
--- a/apps/codecs/Tremor/bitwise.c
+++ b/apps/codecs/Tremor/bitwise.c
@@ -22,6 +22,15 @@
22#include <string.h> 22#include <string.h>
23#include "ogg.h" 23#include "ogg.h"
24 24
25const unsigned long oggpack_mask[] ICONST_ATTR =
26{0x00000000,0x00000001,0x00000003,0x00000007,0x0000000f,
27 0x0000001f,0x0000003f,0x0000007f,0x000000ff,0x000001ff,
28 0x000003ff,0x000007ff,0x00000fff,0x00001fff,0x00003fff,
29 0x00007fff,0x0000ffff,0x0001ffff,0x0003ffff,0x0007ffff,
30 0x000fffff,0x001fffff,0x003fffff,0x007fffff,0x00ffffff,
31 0x01ffffff,0x03ffffff,0x07ffffff,0x0fffffff,0x1fffffff,
32 0x3fffffff,0x7fffffff,0xffffffff };
33
25void oggpack_readinit(oggpack_buffer *b,ogg_reference *r){ 34void oggpack_readinit(oggpack_buffer *b,ogg_reference *r){
26 memset(b,0,sizeof(*b)); 35 memset(b,0,sizeof(*b));
27 36
@@ -42,7 +51,7 @@ void oggpack_readinit(oggpack_buffer *b,ogg_reference *r){
42/* Read in bits without advancing the bitptr; bits <= 32 */ 51/* Read in bits without advancing the bitptr; bits <= 32 */
43long oggpack_look_full(oggpack_buffer *b,int bits) ICODE_ATTR; 52long oggpack_look_full(oggpack_buffer *b,int bits) ICODE_ATTR;
44long oggpack_look_full(oggpack_buffer *b,int bits){ 53long oggpack_look_full(oggpack_buffer *b,int bits){
45 unsigned long m=(1<<bits)-1; 54 unsigned long m=oggpack_mask[bits];
46 unsigned long ret=0; 55 unsigned long ret=0;
47 56
48 bits+=b->headbit; 57 bits+=b->headbit;
@@ -127,8 +136,9 @@ int oggpack_eop(oggpack_buffer *b){
127} 136}
128 137
129/* bits <= 32 */ 138/* bits <= 32 */
139long oggpack_read(oggpack_buffer *b,int bits) ICODE_ATTR;
130long oggpack_read(oggpack_buffer *b,int bits){ 140long oggpack_read(oggpack_buffer *b,int bits){
131 unsigned long m=(1<<bits)-1; 141 unsigned long m=oggpack_mask[bits];
132 ogg_uint32_t ret=0; 142 ogg_uint32_t ret=0;
133 143
134 bits+=b->headbit; 144 bits+=b->headbit;
@@ -198,8 +208,8 @@ long oggpack_read(oggpack_buffer *b,int bits){
198 } 208 }
199 } 209 }
200 210
201 b->headptr+=bits/8; 211 b->headptr+=((unsigned)bits)/8;
202 b->headend-=bits/8; 212 b->headend-=((unsigned)bits)/8;
203 } 213 }
204 214
205 ret&=m; 215 ret&=m;
diff --git a/apps/codecs/Tremor/block.c b/apps/codecs/Tremor/block.c
index fb451f6868..17b15e5d83 100644
--- a/apps/codecs/Tremor/block.c
+++ b/apps/codecs/Tremor/block.c
@@ -256,6 +256,7 @@ void vorbis_dsp_clear(vorbis_dsp_state *v){
256 block. The time domain envelope is not yet handled at the point of 256 block. The time domain envelope is not yet handled at the point of
257 calling (as it relies on the previous block). */ 257 calling (as it relies on the previous block). */
258 258
259int vorbis_synthesis_blockin(vorbis_dsp_state *v,vorbis_block *vb) ICODE_ATTR;
259int vorbis_synthesis_blockin(vorbis_dsp_state *v,vorbis_block *vb){ 260int vorbis_synthesis_blockin(vorbis_dsp_state *v,vorbis_block *vb){
260 vorbis_info *vi=v->vi; 261 vorbis_info *vi=v->vi;
261 codec_setup_info *ci=(codec_setup_info *)vi->codec_setup; 262 codec_setup_info *ci=(codec_setup_info *)vi->codec_setup;
diff --git a/apps/codecs/Tremor/floor0.c b/apps/codecs/Tremor/floor0.c
index 0c9542b654..8ea36aba2a 100644
--- a/apps/codecs/Tremor/floor0.c
+++ b/apps/codecs/Tremor/floor0.c
@@ -47,7 +47,7 @@ typedef struct {
47 16.16 format 47 16.16 format
48 returns in m.8 format */ 48 returns in m.8 format */
49 49
50static long ADJUST_SQRT2[2] ICODE_ATTR ={8192,5792}; 50static const long ADJUST_SQRT2[2] ICONST_ATTR ={8192,5792};
51static inline ogg_int32_t vorbis_invsqlook_i(long a,long e){ 51static inline ogg_int32_t vorbis_invsqlook_i(long a,long e){
52 long i=(a&0x7fff)>>(INVSQ_LOOKUP_I_SHIFT-1); 52 long i=(a&0x7fff)>>(INVSQ_LOOKUP_I_SHIFT-1);
53 long d=a&INVSQ_LOOKUP_I_MASK; /* 0.10 */ 53 long d=a&INVSQ_LOOKUP_I_MASK; /* 0.10 */
@@ -117,21 +117,21 @@ static inline ogg_int32_t toBARK(int n){
117 } 117 }
118} 118}
119 119
120static const unsigned char MLOOP_1[64] IDATA_ATTR ={ 120static const unsigned char MLOOP_1[64] ICONST_ATTR ={
121 0,10,11,11, 12,12,12,12, 13,13,13,13, 13,13,13,13, 121 0,10,11,11, 12,12,12,12, 13,13,13,13, 13,13,13,13,
122 14,14,14,14, 14,14,14,14, 14,14,14,14, 14,14,14,14, 122 14,14,14,14, 14,14,14,14, 14,14,14,14, 14,14,14,14,
123 15,15,15,15, 15,15,15,15, 15,15,15,15, 15,15,15,15, 123 15,15,15,15, 15,15,15,15, 15,15,15,15, 15,15,15,15,
124 15,15,15,15, 15,15,15,15, 15,15,15,15, 15,15,15,15, 124 15,15,15,15, 15,15,15,15, 15,15,15,15, 15,15,15,15,
125}; 125};
126 126
127static const unsigned char MLOOP_2[64] IDATA_ATTR ={ 127static const unsigned char MLOOP_2[64] ICONST_ATTR ={
128 0,4,5,5, 6,6,6,6, 7,7,7,7, 7,7,7,7, 128 0,4,5,5, 6,6,6,6, 7,7,7,7, 7,7,7,7,
129 8,8,8,8, 8,8,8,8, 8,8,8,8, 8,8,8,8, 129 8,8,8,8, 8,8,8,8, 8,8,8,8, 8,8,8,8,
130 9,9,9,9, 9,9,9,9, 9,9,9,9, 9,9,9,9, 130 9,9,9,9, 9,9,9,9, 9,9,9,9, 9,9,9,9,
131 9,9,9,9, 9,9,9,9, 9,9,9,9, 9,9,9,9, 131 9,9,9,9, 9,9,9,9, 9,9,9,9, 9,9,9,9,
132}; 132};
133 133
134static const unsigned char MLOOP_3[8] IDATA_ATTR ={0,1,2,2,3,3,3,3}; 134static const unsigned char MLOOP_3[8] ICONST_ATTR ={0,1,2,2,3,3,3,3};
135 135
136void vorbis_lsp_to_curve(ogg_int32_t *curve,int *map,int n,int ln, 136void vorbis_lsp_to_curve(ogg_int32_t *curve,int *map,int n,int ln,
137 ogg_int32_t *lsp,int m, 137 ogg_int32_t *lsp,int m,
@@ -430,7 +430,7 @@ static int floor0_inverse2(vorbis_block *vb,vorbis_look_floor *i,
430} 430}
431 431
432/* export hooks */ 432/* export hooks */
433vorbis_func_floor floor0_exportbundle={ 433const vorbis_func_floor floor0_exportbundle ICONST_ATTR ={
434 &floor0_unpack,&floor0_look,&floor0_free_info, 434 &floor0_unpack,&floor0_look,&floor0_free_info,
435 &floor0_free_look,&floor0_inverse1,&floor0_inverse2 435 &floor0_free_look,&floor0_inverse1,&floor0_inverse2
436}; 436};
diff --git a/apps/codecs/Tremor/floor1.c b/apps/codecs/Tremor/floor1.c
index e01b08cd11..14515c27e6 100644
--- a/apps/codecs/Tremor/floor1.c
+++ b/apps/codecs/Tremor/floor1.c
@@ -197,17 +197,19 @@ static vorbis_look_floor *floor1_look(vorbis_dsp_state *vd,vorbis_info_mode *mi,
197static int render_point(int x0,int x1,int y0,int y1,int x){ 197static int render_point(int x0,int x1,int y0,int y1,int x){
198 y0&=0x7fff; /* mask off flag */ 198 y0&=0x7fff; /* mask off flag */
199 y1&=0x7fff; 199 y1&=0x7fff;
200 200#if defined(CPU_COLDFIRE) && !defined(SIMULATOR)
201 { 201 asm volatile ("sub.l %[x0],%[x];"
202 int dy=y1-y0; 202 "sub.l %[y0],%[y1];"
203 int adx=x1-x0; 203 "sub.l %[x0],%[x1];"
204 int ady=abs(dy); 204 "muls.l %[y1],%[x];"
205 int err=ady*(x-x0); 205 "divs.l %[x1],%[x];"
206 206 "add.l %[y0],%[x];"
207 int off=err/adx; 207 : [x] "+d" (x), [x1] "+d" (x1), [y1] "+d" (y1)
208 if(dy<0)return(y0-off); 208 : [x0] "r" (x0), [y0] "r" (y0) );
209 return(y0+off); 209 return x;
210 } 210#else
211 return y0+((y1-y0)*(x-x0))/(x1-x0);
212#endif
211} 213}
212 214
213#ifdef _LOW_ACCURACY_ 215#ifdef _LOW_ACCURACY_
@@ -217,7 +219,7 @@ static int render_point(int x0,int x1,int y0,int y1,int x){
217#endif 219#endif
218 220
219/* keep the floor lookup table in fast IRAM */ 221/* keep the floor lookup table in fast IRAM */
220static ogg_int32_t FLOOR_fromdB_LOOKUP[256] IDATA_ATTR = { 222static const ogg_int32_t FLOOR_fromdB_LOOKUP[256] ICONST_ATTR = {
221 XdB(0x000000e5), XdB(0x000000f4), XdB(0x00000103), XdB(0x00000114), 223 XdB(0x000000e5), XdB(0x000000f4), XdB(0x00000103), XdB(0x00000114),
222 XdB(0x00000126), XdB(0x00000139), XdB(0x0000014e), XdB(0x00000163), 224 XdB(0x00000126), XdB(0x00000139), XdB(0x0000014e), XdB(0x00000163),
223 XdB(0x0000017a), XdB(0x00000193), XdB(0x000001ad), XdB(0x000001c9), 225 XdB(0x0000017a), XdB(0x00000193), XdB(0x000001ad), XdB(0x000001c9),
@@ -283,7 +285,7 @@ static ogg_int32_t FLOOR_fromdB_LOOKUP[256] IDATA_ATTR = {
283 XdB(0x52606733), XdB(0x57bad899), XdB(0x5d6e593a), XdB(0x6380b298), 285 XdB(0x52606733), XdB(0x57bad899), XdB(0x5d6e593a), XdB(0x6380b298),
284 XdB(0x69f80e9a), XdB(0x70dafda8), XdB(0x78307d76), XdB(0x7fffffff), 286 XdB(0x69f80e9a), XdB(0x70dafda8), XdB(0x78307d76), XdB(0x7fffffff),
285}; 287};
286 288
287static void render_line(int x0,register int x1,int y0,int y1,ogg_int32_t *d){ 289static void render_line(int x0,register int x1,int y0,int y1,ogg_int32_t *d){
288 int dy=y1-y0; 290 int dy=y1-y0;
289 register int x=x0; 291 register int x=x0;
@@ -310,6 +312,7 @@ static void render_line(int x0,register int x1,int y0,int y1,ogg_int32_t *d){
310 } 312 }
311} 313}
312 314
315static void *floor1_inverse1(vorbis_block *vb,vorbis_look_floor *in) ICODE_ATTR;
313static void *floor1_inverse1(vorbis_block *vb,vorbis_look_floor *in){ 316static void *floor1_inverse1(vorbis_block *vb,vorbis_look_floor *in){
314 vorbis_look_floor1 *look=(vorbis_look_floor1 *)in; 317 vorbis_look_floor1 *look=(vorbis_look_floor1 *)in;
315 vorbis_info_floor1 *info=look->vi; 318 vorbis_info_floor1 *info=look->vi;
@@ -387,7 +390,6 @@ static void *floor1_inverse1(vorbis_block *vb,vorbis_look_floor *in){
387 }else{ 390 }else{
388 fit_value[i]=predicted|0x8000; 391 fit_value[i]=predicted|0x8000;
389 } 392 }
390
391 } 393 }
392 394
393 return(fit_value); 395 return(fit_value);
@@ -397,6 +399,8 @@ static void *floor1_inverse1(vorbis_block *vb,vorbis_look_floor *in){
397} 399}
398 400
399static int floor1_inverse2(vorbis_block *vb,vorbis_look_floor *in,void *memo, 401static int floor1_inverse2(vorbis_block *vb,vorbis_look_floor *in,void *memo,
402 ogg_int32_t *out) ICODE_ATTR;
403static int floor1_inverse2(vorbis_block *vb,vorbis_look_floor *in,void *memo,
400 ogg_int32_t *out){ 404 ogg_int32_t *out){
401 vorbis_look_floor1 *look=(vorbis_look_floor1 *)in; 405 vorbis_look_floor1 *look=(vorbis_look_floor1 *)in;
402 vorbis_info_floor1 *info=look->vi; 406 vorbis_info_floor1 *info=look->vi;
@@ -433,7 +437,7 @@ static int floor1_inverse2(vorbis_block *vb,vorbis_look_floor *in,void *memo,
433} 437}
434 438
435/* export hooks */ 439/* export hooks */
436vorbis_func_floor floor1_exportbundle = { 440const vorbis_func_floor floor1_exportbundle ICONST_ATTR = {
437 &floor1_unpack,&floor1_look,&floor1_free_info, 441 &floor1_unpack,&floor1_look,&floor1_free_info,
438 &floor1_free_look,&floor1_inverse1,&floor1_inverse2 442 &floor1_free_look,&floor1_inverse1,&floor1_inverse2
439}; 443};
diff --git a/apps/codecs/Tremor/framing.c b/apps/codecs/Tremor/framing.c
index 7358986946..f17ad86d98 100644
--- a/apps/codecs/Tremor/framing.c
+++ b/apps/codecs/Tremor/framing.c
@@ -105,6 +105,7 @@ static ogg_buffer *_fetch_buffer(ogg_buffer_state *bs,long bytes){
105 return ob; 105 return ob;
106} 106}
107 107
108static ogg_reference *_fetch_ref(ogg_buffer_state *bs) ICODE_ATTR;
108static ogg_reference *_fetch_ref(ogg_buffer_state *bs){ 109static ogg_reference *_fetch_ref(ogg_buffer_state *bs){
109 ogg_reference *or; 110 ogg_reference *or;
110 bs->outstanding++; 111 bs->outstanding++;
@@ -501,7 +502,7 @@ int ogg_page_packets(ogg_page *og){
501/* Static CRC calculation table. See older code in CVS for dead 502/* Static CRC calculation table. See older code in CVS for dead
502 run-time initialization code. */ 503 run-time initialization code. */
503 504
504static ogg_uint32_t crc_lookup[256] = { 505static const ogg_uint32_t crc_lookup[256] ICONST_ATTR = {
505 0x00000000,0x04c11db7,0x09823b6e,0x0d4326d9, 506 0x00000000,0x04c11db7,0x09823b6e,0x0d4326d9,
506 0x130476dc,0x17c56b6b,0x1a864db2,0x1e475005, 507 0x130476dc,0x17c56b6b,0x1a864db2,0x1e475005,
507 0x2608edb8,0x22c9f00f,0x2f8ad6d6,0x2b4bcb61, 508 0x2608edb8,0x22c9f00f,0x2f8ad6d6,0x2b4bcb61,
@@ -856,6 +857,7 @@ static void _next_lace(oggbyte_buffer *ob,ogg_stream_state *os){
856 } 857 }
857} 858}
858 859
860static void _span_queued_page(ogg_stream_state *os) ICODE_ATTR;
859static void _span_queued_page(ogg_stream_state *os){ 861static void _span_queued_page(ogg_stream_state *os){
860 while( !(os->body_fill&FINFLAG) ){ 862 while( !(os->body_fill&FINFLAG) ){
861 863
@@ -1014,6 +1016,7 @@ int ogg_stream_reset_serialno(ogg_stream_state *os,int serialno){
1014 return OGG_SUCCESS; 1016 return OGG_SUCCESS;
1015} 1017}
1016 1018
1019static int _packetout(ogg_stream_state *os,ogg_packet *op,int adv) ICODE_ATTR;
1017static int _packetout(ogg_stream_state *os,ogg_packet *op,int adv){ 1020static int _packetout(ogg_stream_state *os,ogg_packet *op,int adv){
1018 1021
1019 ogg_packet_release(op); 1022 ogg_packet_release(op);
diff --git a/apps/codecs/Tremor/lsp_lookup.h b/apps/codecs/Tremor/lsp_lookup.h
index cced7c9282..8609936542 100644
--- a/apps/codecs/Tremor/lsp_lookup.h
+++ b/apps/codecs/Tremor/lsp_lookup.h
@@ -26,7 +26,7 @@
26#define FROMdB2_SHIFT 3 26#define FROMdB2_SHIFT 3
27#define FROMdB2_MASK 31 27#define FROMdB2_MASK 31
28 28
29static const ogg_int32_t FROMdB_LOOKUP[FROMdB_LOOKUP_SZ] ={ 29static const ogg_int32_t FROMdB_LOOKUP[FROMdB_LOOKUP_SZ] ICONST_ATTR ={
30 0x003fffff, 0x0028619b, 0x00197a96, 0x0010137a, 30 0x003fffff, 0x0028619b, 0x00197a96, 0x0010137a,
31 0x000a24b0, 0x00066666, 0x000409c3, 0x00028c42, 31 0x000a24b0, 0x00066666, 0x000409c3, 0x00028c42,
32 0x00019b8c, 0x000103ab, 0x0000a3d7, 0x00006760, 32 0x00019b8c, 0x000103ab, 0x0000a3d7, 0x00006760,
@@ -37,7 +37,7 @@ static const ogg_int32_t FROMdB_LOOKUP[FROMdB_LOOKUP_SZ] ={
37 0x0000000b, 0x00000007, 0x00000004, 0x00000003, 37 0x0000000b, 0x00000007, 0x00000004, 0x00000003,
38 0x00000002, 0x00000001, 0x00000001}; 38 0x00000002, 0x00000001, 0x00000001};
39 39
40static const ogg_int32_t FROMdB2_LOOKUP[FROMdB2_LOOKUP_SZ] ={ 40static const ogg_int32_t FROMdB2_LOOKUP[FROMdB2_LOOKUP_SZ] ICONST_ATTR ={
41 0x000001fc, 0x000001f5, 0x000001ee, 0x000001e7, 41 0x000001fc, 0x000001f5, 0x000001ee, 0x000001e7,
42 0x000001e0, 0x000001d9, 0x000001d2, 0x000001cc, 42 0x000001e0, 0x000001d9, 0x000001d2, 0x000001cc,
43 0x000001c5, 0x000001bf, 0x000001b8, 0x000001b2, 43 0x000001c5, 0x000001bf, 0x000001b8, 0x000001b2,
@@ -50,7 +50,7 @@ static const ogg_int32_t FROMdB2_LOOKUP[FROMdB2_LOOKUP_SZ] ={
50 50
51#define INVSQ_LOOKUP_I_SHIFT 10 51#define INVSQ_LOOKUP_I_SHIFT 10
52#define INVSQ_LOOKUP_I_MASK 1023 52#define INVSQ_LOOKUP_I_MASK 1023
53static const long INVSQ_LOOKUP_I[64+1] ={ 53static const long INVSQ_LOOKUP_I[64+1] ICONST_ATTR ={
54 92682, 91966, 91267, 90583, 54 92682, 91966, 91267, 90583,
55 89915, 89261, 88621, 87995, 55 89915, 89261, 88621, 87995,
56 87381, 86781, 86192, 85616, 56 87381, 86781, 86192, 85616,
@@ -70,7 +70,7 @@ static const long INVSQ_LOOKUP_I[64+1] ={
70 65536, 70 65536,
71}; 71};
72 72
73static const long INVSQ_LOOKUP_IDel[64] ={ 73static const long INVSQ_LOOKUP_IDel[64] ICONST_ATTR ={
74 716, 699, 684, 668, 74 716, 699, 684, 668,
75 654, 640, 626, 614, 75 654, 640, 626, 614,
76 600, 589, 576, 565, 76 600, 589, 576, 565,
@@ -92,7 +92,7 @@ static const long INVSQ_LOOKUP_IDel[64] ={
92#define COS_LOOKUP_I_SHIFT 9 92#define COS_LOOKUP_I_SHIFT 9
93#define COS_LOOKUP_I_MASK 511 93#define COS_LOOKUP_I_MASK 511
94#define COS_LOOKUP_I_SZ 128 94#define COS_LOOKUP_I_SZ 128
95static const ogg_int32_t COS_LOOKUP_I[COS_LOOKUP_I_SZ+1] ={ 95static const ogg_int32_t COS_LOOKUP_I[COS_LOOKUP_I_SZ+1] ICONST_ATTR ={
96 16384, 16379, 16364, 16340, 96 16384, 16379, 16364, 16340,
97 16305, 16261, 16207, 16143, 97 16305, 16261, 16207, 16143,
98 16069, 15986, 15893, 15791, 98 16069, 15986, 15893, 15791,
diff --git a/apps/codecs/Tremor/mapping0.c b/apps/codecs/Tremor/mapping0.c
index 6154f5de6b..b5b306fa34 100644
--- a/apps/codecs/Tremor/mapping0.c
+++ b/apps/codecs/Tremor/mapping0.c
@@ -184,6 +184,7 @@ static int seq = 0;
184 184
185#define CHANNELS 2 /* max 2 channels on the ihp-1xx (stereo) */ 185#define CHANNELS 2 /* max 2 channels on the ihp-1xx (stereo) */
186 186
187static int mapping0_inverse(vorbis_block *vb,vorbis_look_mapping *l) ICODE_ATTR;
187static int mapping0_inverse(vorbis_block *vb,vorbis_look_mapping *l){ 188static int mapping0_inverse(vorbis_block *vb,vorbis_look_mapping *l){
188 vorbis_dsp_state *vd=vb->vd; 189 vorbis_dsp_state *vd=vb->vd;
189 vorbis_info *vi=vd->vi; 190 vorbis_info *vi=vd->vi;
@@ -323,7 +324,7 @@ static int mapping0_inverse(vorbis_block *vb,vorbis_look_mapping *l){
323} 324}
324 325
325/* export hooks */ 326/* export hooks */
326vorbis_func_mapping mapping0_exportbundle ={ 327const vorbis_func_mapping mapping0_exportbundle ICONST_ATTR ={
327 &mapping0_unpack, 328 &mapping0_unpack,
328 &mapping0_look, 329 &mapping0_look,
329 &mapping0_free_info, 330 &mapping0_free_info,
diff --git a/apps/codecs/Tremor/mdct.c b/apps/codecs/Tremor/mdct.c
index f040eea3da..5d7f195616 100644
--- a/apps/codecs/Tremor/mdct.c
+++ b/apps/codecs/Tremor/mdct.c
@@ -332,6 +332,7 @@ STIN void mdct_bitreverse(DATA_TYPE *x,int n,int step,int shift) {
332} 332}
333 333
334 334
335void mdct_backward(int n, DATA_TYPE *in, DATA_TYPE *out) ICODE_ATTR;
335void mdct_backward(int n, DATA_TYPE *in, DATA_TYPE *out) { 336void mdct_backward(int n, DATA_TYPE *in, DATA_TYPE *out) {
336 int n2=n>>1; 337 int n2=n>>1;
337 int n4=n>>2; 338 int n4=n>>2;
diff --git a/apps/codecs/Tremor/ogg.h b/apps/codecs/Tremor/ogg.h
index 08d15788c0..e6c78da95e 100644
--- a/apps/codecs/Tremor/ogg.h
+++ b/apps/codecs/Tremor/ogg.h
@@ -184,12 +184,13 @@ static inline void oggpack_adv(oggpack_buffer *b,int bits){
184 bits+=b->headbit; 184 bits+=b->headbit;
185 b->headbit=bits&7; 185 b->headbit=bits&7;
186 b->headptr+=bits/8; 186 b->headptr+=bits/8;
187 if((b->headend-=bits/8)<1)_span(b); 187 if((b->headend-=((unsigned)bits)/8)<1)_span(b);
188} 188}
189 189
190static inline long oggpack_look(oggpack_buffer *b, int bits){ 190static inline long oggpack_look(oggpack_buffer *b, int bits){
191 if(bits+b->headbit < b->headend<<3){ 191 if(bits+b->headbit < b->headend<<3){
192 unsigned long m=(1<<bits)-1; 192 extern const unsigned long oggpack_mask[];
193 unsigned long m=oggpack_mask[bits];
193 unsigned long ret=0; 194 unsigned long ret=0;
194 195
195 bits+=b->headbit; 196 bits+=b->headbit;
diff --git a/apps/codecs/Tremor/registry.c b/apps/codecs/Tremor/registry.c
index 0882309b32..b1592628a1 100644
--- a/apps/codecs/Tremor/registry.c
+++ b/apps/codecs/Tremor/registry.c
@@ -31,18 +31,18 @@ extern vorbis_func_residue residue1_exportbundle;
31extern vorbis_func_residue residue2_exportbundle; 31extern vorbis_func_residue residue2_exportbundle;
32extern vorbis_func_mapping mapping0_exportbundle; 32extern vorbis_func_mapping mapping0_exportbundle;
33 33
34vorbis_func_floor *_floor_P[] = { 34vorbis_func_floor *_floor_P[] ICONST_ATTR = {
35 &floor0_exportbundle, 35 &floor0_exportbundle,
36 &floor1_exportbundle, 36 &floor1_exportbundle,
37}; 37};
38 38
39vorbis_func_residue *_residue_P[] = { 39vorbis_func_residue *_residue_P[] ICONST_ATTR = {
40 &residue0_exportbundle, 40 &residue0_exportbundle,
41 &residue1_exportbundle, 41 &residue1_exportbundle,
42 &residue2_exportbundle, 42 &residue2_exportbundle,
43}; 43};
44 44
45vorbis_func_mapping *_mapping_P[] = { 45vorbis_func_mapping *_mapping_P[] ICONST_ATTR = {
46 &mapping0_exportbundle, 46 &mapping0_exportbundle,
47}; 47};
48 48
diff --git a/apps/codecs/Tremor/res012.c b/apps/codecs/Tremor/res012.c
index 303a58c2f2..0f4d224f89 100644
--- a/apps/codecs/Tremor/res012.c
+++ b/apps/codecs/Tremor/res012.c
@@ -259,6 +259,8 @@ int res1_inverse(vorbis_block *vb,vorbis_look_residue *vl,
259 259
260/* duplicate code here as speed is somewhat more important */ 260/* duplicate code here as speed is somewhat more important */
261int res2_inverse(vorbis_block *vb,vorbis_look_residue *vl, 261int res2_inverse(vorbis_block *vb,vorbis_look_residue *vl,
262 ogg_int32_t **in,int *nonzero,int ch) ICODE_ATTR;
263int res2_inverse(vorbis_block *vb,vorbis_look_residue *vl,
262 ogg_int32_t **in,int *nonzero,int ch){ 264 ogg_int32_t **in,int *nonzero,int ch){
263 long i,k,l,s; 265 long i,k,l,s;
264 vorbis_look_residue0 *look=(vorbis_look_residue0 *)vl; 266 vorbis_look_residue0 *look=(vorbis_look_residue0 *)vl;
@@ -311,7 +313,7 @@ int res2_inverse(vorbis_block *vb,vorbis_look_residue *vl,
311} 313}
312 314
313 315
314const vorbis_func_residue residue0_exportbundle ={ 316const vorbis_func_residue residue0_exportbundle ICONST_ATTR ={
315 &res0_unpack, 317 &res0_unpack,
316 &res0_look, 318 &res0_look,
317 &res0_free_info, 319 &res0_free_info,
@@ -319,7 +321,7 @@ const vorbis_func_residue residue0_exportbundle ={
319 &res0_inverse 321 &res0_inverse
320}; 322};
321 323
322const vorbis_func_residue residue1_exportbundle ={ 324const vorbis_func_residue residue1_exportbundle ICONST_ATTR ={
323 &res0_unpack, 325 &res0_unpack,
324 &res0_look, 326 &res0_look,
325 &res0_free_info, 327 &res0_free_info,
@@ -327,7 +329,7 @@ const vorbis_func_residue residue1_exportbundle ={
327 &res1_inverse 329 &res1_inverse
328}; 330};
329 331
330const vorbis_func_residue residue2_exportbundle ={ 332const vorbis_func_residue residue2_exportbundle ICONST_ATTR ={
331 &res0_unpack, 333 &res0_unpack,
332 &res0_look, 334 &res0_look,
333 &res0_free_info, 335 &res0_free_info,
diff --git a/apps/codecs/Tremor/synthesis.c b/apps/codecs/Tremor/synthesis.c
index 081ac9adcd..c7f0bb6cc5 100644
--- a/apps/codecs/Tremor/synthesis.c
+++ b/apps/codecs/Tremor/synthesis.c
@@ -35,6 +35,7 @@
35static ogg_int32_t *ipcm_vect[CHANNELS] IBSS_ATTR; 35static ogg_int32_t *ipcm_vect[CHANNELS] IBSS_ATTR;
36static ogg_int32_t ipcm_buff[CHANNELS*IRAM_PCM_END] IBSS_ATTR LINE_ATTR; 36static ogg_int32_t ipcm_buff[CHANNELS*IRAM_PCM_END] IBSS_ATTR LINE_ATTR;
37 37
38int vorbis_synthesis(vorbis_block *vb,ogg_packet *op,int decodep) ICODE_ATTR;
38int vorbis_synthesis(vorbis_block *vb,ogg_packet *op,int decodep){ 39int vorbis_synthesis(vorbis_block *vb,ogg_packet *op,int decodep){
39 vorbis_dsp_state *vd=vb->vd; 40 vorbis_dsp_state *vd=vb->vd;
40 private_state *b=(private_state *)vd->backend_state; 41 private_state *b=(private_state *)vd->backend_state;
diff --git a/apps/codecs/Tremor/vorbisfile.c b/apps/codecs/Tremor/vorbisfile.c
index 50f827dae7..54e36d29af 100644
--- a/apps/codecs/Tremor/vorbisfile.c
+++ b/apps/codecs/Tremor/vorbisfile.c
@@ -480,6 +480,9 @@ static void _decode_clear(OggVorbis_File *vf){
480 480
481static int _fetch_and_process_packet(OggVorbis_File *vf, 481static int _fetch_and_process_packet(OggVorbis_File *vf,
482 int readp, 482 int readp,
483 int spanp) ICODE_ATTR;
484static int _fetch_and_process_packet(OggVorbis_File *vf,
485 int readp,
483 int spanp){ 486 int spanp){
484 ogg_page og={0,0,0,0}; 487 ogg_page og={0,0,0,0};
485 ogg_packet op={0,0,0,0,0,0}; 488 ogg_packet op={0,0,0,0,0,0};
@@ -1457,6 +1460,7 @@ ogg_int64_t ov_pcm_tell(OggVorbis_File *vf){
1457} 1460}
1458 1461
1459/* return time offset (milliseconds) of next PCM sample to be read */ 1462/* return time offset (milliseconds) of next PCM sample to be read */
1463ogg_int64_t ov_time_tell(OggVorbis_File *vf) ICODE_ATTR;
1460ogg_int64_t ov_time_tell(OggVorbis_File *vf){ 1464ogg_int64_t ov_time_tell(OggVorbis_File *vf){
1461 int link=0; 1465 int link=0;
1462 ogg_int64_t pcm_total=0; 1466 ogg_int64_t pcm_total=0;