diff options
author | Tomasz Malesinski <tomal@rockbox.org> | 2006-11-26 18:31:41 +0000 |
---|---|---|
committer | Tomasz Malesinski <tomal@rockbox.org> | 2006-11-26 18:31:41 +0000 |
commit | 80da8b141c4672ca4380d66094976b6342ed5071 (patch) | |
tree | 631e9edd537ae9983524622a9e1ec82e24957280 /apps/codecs/lib | |
parent | 8ef3c8a342d41c2aa5e5d8370fd4e89d4d8d937e (diff) |
FS#6357, patch 1: let iramcopy and bss share the same space in codecs and
plugins. Currently, in case of plugins using IRAM bss is cleared twice,
once in the loader, once in PLUGIN_IRAM_INIT. For codecs, bss is cleared only
during codec initialization. Also, removed double variables in codecs
storing a pointer to codec_api.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11606 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/codecs/lib')
-rw-r--r-- | apps/codecs/lib/codeclib.c | 45 | ||||
-rw-r--r-- | apps/codecs/lib/codeclib.h | 3 |
2 files changed, 23 insertions, 25 deletions
diff --git a/apps/codecs/lib/codeclib.c b/apps/codecs/lib/codeclib.c index 4aa7d29e86..f6b2131e88 100644 --- a/apps/codecs/lib/codeclib.c +++ b/apps/codecs/lib/codeclib.c @@ -24,29 +24,26 @@ #include "codeclib.h" #include "id3.h" -struct codec_api *local_rb; - long mem_ptr; long bufsize; unsigned char* mp3buf; // The actual MP3 buffer from Rockbox unsigned char* mallocbuf; // 512K from the start of MP3 buffer unsigned char* filebuf; // The rest of the MP3 buffer -int codec_init(struct codec_api* rb) +int codec_init(void) { - local_rb = rb; mem_ptr = 0; - mallocbuf = (unsigned char *)rb->get_codec_memory((size_t *)&bufsize); + mallocbuf = (unsigned char *)ci->get_codec_memory((size_t *)&bufsize); return 0; } void codec_set_replaygain(struct mp3entry* id3) { - local_rb->configure(DSP_SET_TRACK_GAIN, (long *) id3->track_gain); - local_rb->configure(DSP_SET_ALBUM_GAIN, (long *) id3->album_gain); - local_rb->configure(DSP_SET_TRACK_PEAK, (long *) id3->track_peak); - local_rb->configure(DSP_SET_ALBUM_PEAK, (long *) id3->album_peak); + ci->configure(DSP_SET_TRACK_GAIN, (long *) id3->track_gain); + ci->configure(DSP_SET_ALBUM_GAIN, (long *) id3->album_gain); + ci->configure(DSP_SET_TRACK_PEAK, (long *) id3->track_peak); + ci->configure(DSP_SET_ALBUM_PEAK, (long *) id3->album_peak); } /* Various "helper functions" common to all the xxx2wav decoder plugins */ @@ -71,7 +68,7 @@ void* codec_calloc(size_t nmemb, size_t size) x = codec_malloc(nmemb*size); if (x == NULL) return NULL; - local_rb->memset(x,0,nmemb*size); + ci->memset(x,0,nmemb*size); return(x); } @@ -89,71 +86,71 @@ void* codec_realloc(void* ptr, size_t size) size_t strlen(const char *s) { - return(local_rb->strlen(s)); + return(ci->strlen(s)); } char *strcpy(char *dest, const char *src) { - return(local_rb->strcpy(dest,src)); + return(ci->strcpy(dest,src)); } char *strcat(char *dest, const char *src) { - return(local_rb->strcat(dest,src)); + return(ci->strcat(dest,src)); } int strcmp(const char *s1, const char *s2) { - return(local_rb->strcmp(s1,s2)); + return(ci->strcmp(s1,s2)); } int strncasecmp(const char *s1, const char *s2, size_t n) { - return(local_rb->strncasecmp(s1,s2,n)); + return(ci->strncasecmp(s1,s2,n)); } void *memcpy(void *dest, const void *src, size_t n) { - return(local_rb->memcpy(dest,src,n)); + return(ci->memcpy(dest,src,n)); } void *memset(void *s, int c, size_t n) { - return(local_rb->memset(s,c,n)); + return(ci->memset(s,c,n)); } int memcmp(const void *s1, const void *s2, size_t n) { - return(local_rb->memcmp(s1,s2,n)); + return(ci->memcmp(s1,s2,n)); } void* memchr(const void *s, int c, size_t n) { - return(local_rb->memchr(s,c,n)); + return(ci->memchr(s,c,n)); } void *memmove(void *dest, const void *src, size_t n) { - return(local_rb->memmove(dest,src,n)); + return(ci->memmove(dest,src,n)); } void qsort(void *base, size_t nmemb, size_t size, int(*compar)(const void *, const void *)) { - local_rb->qsort(base,nmemb,size,compar); + ci->qsort(base,nmemb,size,compar); } #ifdef RB_PROFILE void __cyg_profile_func_enter(void *this_fn, void *call_site) { #ifdef CPU_COLDFIRE (void)call_site; - local_rb->profile_func_enter(this_fn, __builtin_return_address(1)); + ci->profile_func_enter(this_fn, __builtin_return_address(1)); #else - local_rb->profile_func_enter(this_fn, call_site); + ci->profile_func_enter(this_fn, call_site); #endif } void __cyg_profile_func_exit(void *this_fn, void *call_site) { - local_rb->profile_func_exit(this_fn,call_site); + ci->profile_func_exit(this_fn,call_site); } #endif diff --git a/apps/codecs/lib/codeclib.h b/apps/codecs/lib/codeclib.h index 00b60c3e92..366d30e064 100644 --- a/apps/codecs/lib/codeclib.h +++ b/apps/codecs/lib/codeclib.h @@ -24,6 +24,7 @@ #define MALLOC_BUFSIZE (512*1024) +extern struct codec_api *ci; extern long mem_ptr; extern long bufsize; extern unsigned char* mp3buf; // The actual MP3 buffer from Rockbox @@ -55,7 +56,7 @@ void qsort(void *base, size_t nmemb, size_t size, int(*compar)(const void *, con /* Various codec helper functions */ -int codec_init(struct codec_api* rb); +int codec_init(void); void codec_set_replaygain(struct mp3entry* id3); #ifdef RB_PROFILE |