diff options
author | Thom Johansen <thomj@rockbox.org> | 2005-10-13 11:32:52 +0000 |
---|---|---|
committer | Thom Johansen <thomj@rockbox.org> | 2005-10-13 11:32:52 +0000 |
commit | c91e0bbfc9ea289598d2202404eee3a524c7cde1 (patch) | |
tree | 31ac0e5c3e5ec8631dec9695cfc8e5aeb8702a3f /apps/codecs/lib/codeclib.c | |
parent | f9cc638efd655c3ac392fdaf346ebc5c6dbd258b (diff) | |
download | rockbox-c91e0bbfc9ea289598d2202404eee3a524c7cde1.tar.gz rockbox-c91e0bbfc9ea289598d2202404eee3a524c7cde1.zip |
Cleaned up the messy codec header and library system by merging codec.h, lib/codeclib.[ch] and lib/xxx2wav.[ch] into just codeclib.[ch]. Deleted much of the unused code in the xxx2wav portion. All codecs should now only include codeclib.h, and whatever codec specific headers are needed.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7626 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/codecs/lib/codeclib.c')
-rw-r--r-- | apps/codecs/lib/codeclib.c | 119 |
1 files changed, 117 insertions, 2 deletions
diff --git a/apps/codecs/lib/codeclib.c b/apps/codecs/lib/codeclib.c index b2f5c23f77..b9858dd412 100644 --- a/apps/codecs/lib/codeclib.c +++ b/apps/codecs/lib/codeclib.c @@ -19,14 +19,19 @@ /* "helper functions" common to all codecs */ -#include "plugin.h" +#include "codecs.h" #include "dsp.h" #include "codeclib.h" -#include "xxx2wav.h" #include "id3.h" struct codec_api *local_rb; +int mem_ptr; +int 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) { local_rb = rb; @@ -43,3 +48,113 @@ void codec_set_replaygain(struct mp3entry* id3) local_rb->configure(DSP_SET_TRACK_PEAK, (long *) id3->track_peak); local_rb->configure(DSP_SET_ALBUM_PEAK, (long *) id3->album_peak); } + +/* Various "helper functions" common to all the xxx2wav decoder plugins */ + + +void* codec_malloc(size_t size) +{ + void* x; + + if (mem_ptr + (int)size > bufsize) + return NULL; + + x=&mallocbuf[mem_ptr]; + mem_ptr+=(size+3)&~3; /* Keep memory 32-bit aligned */ + + return(x); +} + +void* codec_calloc(size_t nmemb, size_t size) +{ + void* x; + x = codec_malloc(nmemb*size); + if (x == NULL) + return NULL; + local_rb->memset(x,0,nmemb*size); + return(x); +} + +#if defined(SIMULATOR) +void* codec_alloca(size_t size) +{ + void* x; + x = codec_malloc(size); + return(x); +} +#endif + +void codec_free(void* ptr) { + (void)ptr; +} + +void* codec_realloc(void* ptr, size_t size) +{ + void* x; + (void)ptr; + x = codec_malloc(size); + return(x); +} + +size_t strlen(const char *s) +{ + return(local_rb->strlen(s)); +} + +char *strcpy(char *dest, const char *src) +{ + return(local_rb->strcpy(dest,src)); +} + +char *strcat(char *dest, const char *src) +{ + return(local_rb->strcat(dest,src)); +} + +int strcmp(const char *s1, const char *s2) +{ + return(local_rb->strcmp(s1,s2)); +} + +int strncasecmp(const char *s1, const char *s2, size_t n) +{ + return(local_rb->strncasecmp(s1,s2,n)); +} + +void *memcpy(void *dest, const void *src, size_t n) +{ + return(local_rb->memcpy(dest,src,n)); +} + +void *memset(void *s, int c, size_t n) +{ + return(local_rb->memset(s,c,n)); +} + +int memcmp(const void *s1, const void *s2, size_t n) +{ + return(local_rb->memcmp(s1,s2,n)); +} + +void* memchr(const void *s, int c, size_t n) +{ + return(local_rb->memchr(s,c,n)); +} + +void* memmove(const void *s1, const void *s2, size_t n) +{ + char* dest=(char*)s1; + char* src=(char*)s2; + size_t i; + + for (i=0;i<n;i++) + dest[i]=src[i]; + + return(dest); +} + +void qsort(void *base, size_t nmemb, size_t size, + int(*compar)(const void *, const void *)) +{ + local_rb->qsort(base,nmemb,size,compar); +} |