summaryrefslogtreecommitdiffstats
path: root/apps/codecs/lib/codeclib.c
diff options
context:
space:
mode:
authorTomasz Malesinski <tomal@rockbox.org>2006-11-26 18:31:41 +0000
committerTomasz Malesinski <tomal@rockbox.org>2006-11-26 18:31:41 +0000
commit80da8b141c4672ca4380d66094976b6342ed5071 (patch)
tree631e9edd537ae9983524622a9e1ec82e24957280 /apps/codecs/lib/codeclib.c
parent8ef3c8a342d41c2aa5e5d8370fd4e89d4d8d937e (diff)
downloadrockbox-80da8b141c4672ca4380d66094976b6342ed5071.tar.gz
rockbox-80da8b141c4672ca4380d66094976b6342ed5071.zip
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/codeclib.c')
-rw-r--r--apps/codecs/lib/codeclib.c45
1 files changed, 21 insertions, 24 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