diff --git a/symbian/tremor/tremor_symbian.patch b/symbian/tremor/tremor_symbian.patch new file mode 100644 index 000000000..393e6eb1b --- /dev/null +++ b/symbian/tremor/tremor_symbian.patch @@ -0,0 +1,319 @@ +Index: misc.h +=================================================================== +--- misc.h (revision 15409) ++++ misc.h (working copy) +@@ -33,6 +33,11 @@ + #include + #endif + ++#ifdef __SYMBIAN32__ ++# define LITTLE_ENDIAN 1 ++# define BYTE_ORDER LITTLE_ENDIAN ++#endif ++ + #if BYTE_ORDER==LITTLE_ENDIAN + union magic { + struct { +Index: floor0.c +=================================================================== +--- floor0.c (revision 15409) ++++ floor0.c (working copy) +@@ -145,7 +145,7 @@ + int i; + int ampoffseti=ampoffset*4096; + int ampi=amp; +- ogg_int32_t *ilsp=(ogg_int32_t *)alloca(m*sizeof(*ilsp)); ++ ogg_int32_t *ilsp=(ogg_int32_t *)_ogg_malloc(m*sizeof(*ilsp)); + /* lsp is in 8.24, range 0 to PI; coslook wants it in .16 0 to 1*/ + for(i=0;i>COS_LOOKUP_I_SHIFT)>=COS_LOOKUP_I_SZ){ + memset(curve,0,sizeof(*curve)*n); ++ _ogg_free(ilsp); + return; + } + +Index: os_types.h +=================================================================== +--- os_types.h (revision 15409) ++++ os_types.h (working copy) +@@ -32,8 +32,15 @@ + #define _ogg_realloc realloc + #define _ogg_free free + +-#ifdef _WIN32 ++#ifdef __SYMBIAN32__ + ++ typedef long long ogg_int64_t; ++ typedef int ogg_int32_t; ++ typedef unsigned long int ogg_uint32_t; ++ typedef short int ogg_int16_t; ++ ++#elif defined(_WIN32) ++ + # ifndef __GNUC__ + /* MSVC/Borland */ + typedef __int64 ogg_int64_t; +Index: mapping0.c +=================================================================== +--- mapping0.c (revision 15409) ++++ mapping0.c (working copy) +@@ -188,11 +188,11 @@ + int i,j; + long n=vb->pcmend=ci->blocksizes[vb->W]; + +- ogg_int32_t **pcmbundle=(ogg_int32_t **)alloca(sizeof(*pcmbundle)*vi->channels); +- int *zerobundle=(int *)alloca(sizeof(*zerobundle)*vi->channels); ++ ogg_int32_t **pcmbundle=(ogg_int32_t **)_ogg_malloc(sizeof(*pcmbundle)*vi->channels); ++ int *zerobundle=(int *)_ogg_malloc(sizeof(*zerobundle)*vi->channels); + +- int *nonzero =(int *)alloca(sizeof(*nonzero)*vi->channels); +- void **floormemo=(void **)alloca(sizeof(*floormemo)*vi->channels); ++ int *nonzero =(int *)_ogg_malloc(sizeof(*nonzero)*vi->channels); ++ void **floormemo=(void **)_ogg_malloc(sizeof(*floormemo)*vi->channels); + + /* time domain information decode (note that applying the + information would have to happen later; we'll probably add a +@@ -309,6 +309,10 @@ + + seq+=vi->channels; + /* all done! */ ++ _ogg_free(pcmbundle); ++ _ogg_free(zerobundle); ++ _ogg_free(nonzero); ++ _ogg_free(floormemo); + return(0); + } + +Index: codebook.c +=================================================================== +--- codebook.c (revision 15409) ++++ codebook.c (working copy) +@@ -229,15 +229,20 @@ + oggpack_buffer *b,int n,int point){ + if(book->used_entries>0){ + int step=n/book->dim; +- long *entry = (long *)alloca(sizeof(*entry)*step); +- ogg_int32_t **t = (ogg_int32_t **)alloca(sizeof(*t)*step); ++ long *entry = (long *)_ogg_malloc(sizeof(*entry)*step); ++ ogg_int32_t **t = (ogg_int32_t **)_ogg_malloc(sizeof(*t)*step); + int i,j,o; + int shift=point-book->binarypoint; + + if(shift>=0){ + for (i = 0; i < step; i++) { + entry[i]=decode_packed_entry_number(book,b); +- if(entry[i]==-1)return(-1); ++ if(entry[i]==-1) ++ { ++ _ogg_free(entry); ++ _ogg_free(t); ++ return(-1); ++ } + t[i] = book->valuelist+entry[i]*book->dim; + } + for(i=0,o=0;idim;i++,o+=step) +Index: os.h +=================================================================== +--- os.h (revision 15409) ++++ os.h (working copy) +@@ -27,16 +27,17 @@ + # define STIN static __inline__ + # elif _WIN32 + # define STIN static __inline ++# else ++# define STIN static + # endif +-#else +-# define STIN static ++ + #endif + + #ifndef M_PI + # define M_PI (3.1415926536f) + #endif + +-#ifdef _WIN32 ++#if defined(_WIN32) && !defined(__SYMBIAN32__) + # include + # define rint(x) (floor((x)+0.5f)) + # define NO_FLOAT_MATH_LIB +Index: bld.inf +=================================================================== +--- bld.inf (revision 0) ++++ bld.inf (revision 0) +@@ -0,0 +1,11 @@ ++PRJ_PLATFORMS ++DEFAULT ++ ++PRJ_EXPORTS ++ivorbiscodec.h tremor/ivorbiscodec.h ++ivorbisfile.h tremor/ivorbisfile.h ++ogg.h tremor/ogg.h ++os_types.h tremor/os_types.h ++ ++PRJ_MMPFILES ++tremor.mmp +Index: info.c +=================================================================== +--- info.c (revision 15409) ++++ info.c (working copy) +@@ -56,7 +56,7 @@ + long i; + int found = 0; + int taglen = strlen(tag)+1; /* +1 for the = we append */ +- char *fulltag = (char *)alloca(taglen+ 1); ++ char *fulltag = (char *)_ogg_malloc(taglen+ 1); + + strcpy(fulltag, tag); + strcat(fulltag, "="); +@@ -70,13 +70,14 @@ + found++; + } + } ++ _ogg_free(fulltag); + return NULL; /* didn't find anything */ + } + + int vorbis_comment_query_count(vorbis_comment *vc, char *tag){ + int i,count=0; + int taglen = strlen(tag)+1; /* +1 for the = we append */ +- char *fulltag = (char *)alloca(taglen+1); ++ char *fulltag = (char *)_ogg_malloc(taglen+1); + strcpy(fulltag,tag); + strcat(fulltag, "="); + +@@ -85,6 +86,7 @@ + count++; + } + ++ _ogg_free(fulltag); + return count; + } + +Index: window.c +=================================================================== +--- window.c (revision 15409) ++++ window.c (working copy) +@@ -56,7 +56,7 @@ + long *blocksizes, + int lW,int W,int nW){ + +- LOOKUP_T *window[2]={window_p[0],window_p[1]}; ++ LOOKUP_T *window[2]; + long n=blocksizes[W]; + long ln=blocksizes[lW]; + long rn=blocksizes[nW]; +@@ -69,6 +69,9 @@ + + int i,p; + ++ window[0]=window_p[0]; ++ window[1]=window_p[1]; ++ + for(i=0;ipcmend>>1; + int end=(info->endend:max); + int n=end-info->begin; ++ int ***partword = 0; + + if(n>0){ + int partvals=n/samples_per_partition; + int partwords=(partvals+partitions_per_word-1)/partitions_per_word; +- int ***partword=(int ***)alloca(ch*sizeof(*partword)); ++ partword=(int ***)_ogg_malloc(ch*sizeof(*partword)); + + for(j=0;jlengthlist,s->entries,c->used_entries); +- ogg_uint32_t **codep=(ogg_uint32_t **)alloca(sizeof(*codep)*n); ++ ogg_uint32_t **codep=(ogg_uint32_t **)_ogg_malloc(sizeof(*codep)*n); + + if(codes==NULL)goto err_out; + +@@ -358,7 +358,7 @@ + + qsort(codep,n,sizeof(*codep),sort32a); + +- sortindex=(int *)alloca(n*sizeof(*sortindex)); ++ sortindex=(int *)_ogg_malloc(n*sizeof(*sortindex)); + c->codelist=(ogg_uint32_t *)_ogg_malloc(n*sizeof(*c->codelist)); + /* the index is a reverse index */ + for(i=0;icodelist[sortindex[i]]=codes[i]; ++ _ogg_free(codep); + _ogg_free(codes); + + +@@ -431,8 +432,10 @@ + } + } + ++_ogg_free(sortindex); + return(0); + err_out: ++ _ogg_free(sortindex); + vorbis_book_clear(c); + return(-1); + }