From 9a011f3a80e93c7a70f6f0397a07c74df84b7c5d Mon Sep 17 00:00:00 2001 From: Dave Chapman Date: Mon, 7 May 2007 11:09:45 +0000 Subject: [PATCH] Clean up the codec API - remove all unused (and in many cases inappropriate) functions, move functions used only by encoders into the HAVE_RECORDING part of the API and document the reasons for the more unexpected functions being present. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13343 a1c6a512-1295-4272-9138-f99709370657 --- apps/codecs.c | 114 ++++++------------------------ apps/codecs.h | 141 ++++++++----------------------------- apps/codecs/lib/codeclib.c | 5 -- apps/codecs/lib/codeclib.h | 1 - 4 files changed, 52 insertions(+), 209 deletions(-) diff --git a/apps/codecs.c b/apps/codecs.c index f5eb5db8c2..ba9d7392b1 100644 --- a/apps/codecs.c +++ b/apps/codecs.c @@ -91,121 +91,31 @@ struct codec_api ci = { NULL, /* set_offset */ NULL, /* configure */ - gui_syncsplash, - - /* file */ - (open_func)PREFIX(open), - close, - (read_func)read, - PREFIX(lseek), - (creat_func)PREFIX(creat), - (write_func)write, - PREFIX(remove), - PREFIX(rename), - PREFIX(ftruncate), - PREFIX(fsync), - fdprintf, - read_line, - settings_parseline, -#ifndef SIMULATOR - ata_sleep, -#endif - - /* dir */ - PREFIX(opendir), - PREFIX(closedir), - PREFIX(readdir), - PREFIX(mkdir), - /* kernel/ system */ PREFIX(sleep), yield, - ¤t_tick, - default_event_handler, - default_event_handler_ex, - create_thread, - remove_thread, - reset_poweroff_timer, -#ifndef SIMULATOR - system_memory_guard, - &cpu_frequency, -#ifdef HAVE_ADJUSTABLE_CPU_FREQ -#ifdef CPU_BOOST_LOGGING - cpu_boost_, -#else - cpu_boost, -#endif -#endif -#endif /* strings and memory */ - snprintf, strcpy, strncpy, strlen, - strrchr, strcmp, - strcasecmp, - strncasecmp, + strcat, memset, memcpy, memmove, - _ctype_, - atoi, - strchr, - strcat, memcmp, - strcasestr, memchr, - /* sound */ - sound_set, -#ifndef SIMULATOR - mp3_play_data, - mp3_play_pause, - mp3_play_stop, - mp3_is_playing, -#endif - - /* playback control */ - PREFIX(audio_play), - audio_stop, - audio_pause, - audio_resume, - audio_next, - audio_prev, - audio_ff_rewind, - audio_next_track, - playlist_amount, - audio_status, - audio_has_changed_track, - audio_current_track, - audio_flush_and_reload_tracks, - audio_get_file_pos, - - /* misc */ - srand, - rand, - (qsort_func)qsort, - kbd_input, - get_time, - set_time, - plugin_get_audio_buffer, - round_value_to_list32, - #if defined(DEBUG) || defined(SIMULATOR) debugf, #endif #ifdef ROCKBOX_HAS_LOGF logf, #endif + + (qsort_func)qsort, &global_settings, - mp3info, - count_mp3_frames, - create_xing_header, - find_next_frame, - battery_level, - battery_level_safe, #ifdef RB_PROFILE profile_thread, @@ -224,6 +134,24 @@ struct codec_api ci = { enc_pcm_buf_near_empty, enc_get_pcm_data, enc_unget_pcm_data, + + /* file */ + (open_func)PREFIX(open), + close, + (read_func)read, + PREFIX(lseek), + (write_func)write, + +#ifdef HAVE_ADJUSTABLE_CPU_FREQ +#ifdef CPU_BOOST_LOGGING + cpu_boost_, +#else + cpu_boost, +#endif +#endif + + round_value_to_list32, + #endif /* new stuff at the end, sort into place next time diff --git a/apps/codecs.h b/apps/codecs.h index 8f7d556302..3a3970b83d 100644 --- a/apps/codecs.h +++ b/apps/codecs.h @@ -90,12 +90,12 @@ #define CODEC_ENC_MAGIC 0x52454E43 /* RENC */ /* increase this every time the api struct changes */ -#define CODEC_API_VERSION 17 +#define CODEC_API_VERSION 18 /* update this to latest version if a change to the api struct breaks backwards compatibility (and please take the opportunity to sort in any new function which are "waiting" at the end of the function table) */ -#define CODEC_MIN_API_VERSION 17 +#define CODEC_MIN_API_VERSION 18 /* codec return codes */ enum codec_status { @@ -166,136 +166,35 @@ struct codec_api { /* Configure different codec buffer parameters. */ void (*configure)(int setting, intptr_t value); - void (*splash)(int ticks, const char *fmt, ...) ATTRIBUTE_PRINTF(2, 3); - - /* file */ - int (*PREFIX(open))(const char* pathname, int flags); - int (*close)(int fd); - ssize_t (*read)(int fd, void* buf, size_t count); - off_t (*PREFIX(lseek))(int fd, off_t offset, int whence); - int (*PREFIX(creat))(const char *pathname); - ssize_t (*write)(int fd, const void* buf, size_t count); - int (*PREFIX(remove))(const char* pathname); - int (*PREFIX(rename))(const char* path, const char* newname); - int (*PREFIX(ftruncate))(int fd, off_t length); - int (*PREFIX(fsync))(int fd); - - int (*fdprintf)(int fd, const char *fmt, ...) ATTRIBUTE_PRINTF(2, 3); - int (*read_line)(int fd, char* buffer, int buffer_size); - bool (*settings_parseline)(char* line, char** name, char** value); -#ifndef SIMULATOR - void (*ata_sleep)(void); -#endif - - /* dir */ - DIR* (*PREFIX(opendir))(const char* name); - int (*PREFIX(closedir))(DIR* dir); - struct dirent* (*PREFIX(readdir))(DIR* dir); - int (*PREFIX(mkdir))(const char *name); - /* kernel/ system */ void (*PREFIX(sleep))(int ticks); void (*yield)(void); - long* current_tick; - long (*default_event_handler)(long event); - long (*default_event_handler_ex)(long event, void (*callback)(void *), void *parameter); - struct thread_entry* (*create_thread)(void (*function)(void), - void* stack, int stack_size, const char *name - IF_PRIO(, int priority) - IF_COP(, unsigned int core, bool fallback)); - void (*remove_thread)(struct thread_entry *thread); - void (*reset_poweroff_timer)(void); -#ifndef SIMULATOR - int (*system_memory_guard)(int newmode); - long *cpu_frequency; -#ifdef HAVE_ADJUSTABLE_CPU_FREQ -#ifdef CPU_BOOST_LOGGING - void (*cpu_boost_)(bool on_off,char*location,int line); -#else - void (*cpu_boost)(bool on_off); -#endif -#endif -#endif /* strings and memory */ - int (*snprintf)(char *buf, size_t size, const char *fmt, ...) - ATTRIBUTE_PRINTF(3, 4); char* (*strcpy)(char *dst, const char *src); char* (*strncpy)(char *dst, const char *src, size_t length); size_t (*strlen)(const char *str); - char * (*strrchr)(const char *s, int c); int (*strcmp)(const char *, const char *); - int (*strcasecmp)(const char *, const char *); - int (*strncasecmp)(const char *s1, const char *s2, size_t n); + char *(*strcat)(char *s1, const char *s2); void* (*memset)(void *dst, int c, size_t length); void* (*memcpy)(void *out, const void *in, size_t n); void* (*memmove)(void *out, const void *in, size_t n); - const char *_ctype_; - int (*atoi)(const char *str); - char *(*strchr)(const char *s, int c); - char *(*strcat)(char *s1, const char *s2); int (*memcmp)(const void *s1, const void *s2, size_t n); - char *(*strcasestr) (const char* phaystack, const char* pneedle); void *(*memchr)(const void *s1, int c, size_t n); - /* sound */ - void (*sound_set)(int setting, int value); -#ifndef SIMULATOR - void (*mp3_play_data)(const unsigned char* start, - int size, void (*get_more)(unsigned char** start, int* size)); - void (*mp3_play_pause)(bool play); - void (*mp3_play_stop)(void); - bool (*mp3_is_playing)(void); -#endif /* !SIMULATOR */ - - /* playback control */ - void (*PREFIX(audio_play))(long offset); - void (*audio_stop)(void); - void (*audio_pause)(void); - void (*audio_resume)(void); - void (*audio_next)(void); - void (*audio_prev)(void); - void (*audio_ff_rewind)(long newtime); - struct mp3entry* (*audio_next_track)(void); - int (*playlist_amount)(void); - int (*audio_status)(void); - bool (*audio_has_changed_track)(void); - struct mp3entry* (*audio_current_track)(void); - void (*audio_flush_and_reload_tracks)(void); - int (*audio_get_file_pos)(void); - - /* misc */ - void (*srand)(unsigned int seed); - int (*rand)(void); - void (*qsort)(void *base, size_t nmemb, size_t size, - int(*compar)(const void *, const void *)); - int (*kbd_input)(char* buffer, int buflen); - struct tm* (*get_time)(void); - int (*set_time)(const struct tm *tm); - void* (*plugin_get_audio_buffer)(size_t* buffer_size); - int (*round_value_to_list32)(unsigned long value, - const unsigned long list[], - int count, - bool signd); - #if defined(DEBUG) || defined(SIMULATOR) void (*debugf)(const char *fmt, ...) ATTRIBUTE_PRINTF(1, 2); #endif #ifdef ROCKBOX_HAS_LOGF void (*logf)(const char *fmt, ...) ATTRIBUTE_PRINTF(1, 2); #endif + + /* Tremor requires qsort */ + void (*qsort)(void *base, size_t nmemb, size_t size, + int(*compar)(const void *, const void *)); + + /* The ADX codec accesses global_settings to test for REPEAT_ONE mode */ struct user_settings* global_settings; - bool (*mp3info)(struct mp3entry *entry, const char *filename, bool v1first); - int (*count_mp3_frames)(int fd, int startpos, int filesize, - void (*progressfunc)(int)); - int (*create_xing_header)(int fd, long startpos, long filesize, - unsigned char *buf, unsigned long num_frames, - unsigned long rec_time, unsigned long header_template, - void (*progressfunc)(int), bool generate_toc); - unsigned long (*find_next_frame)(int fd, long *offset, - long max_offset, unsigned long last_header); - int (*battery_level)(void); - bool (*battery_level_safe)(void); #ifdef RB_PROFILE void (*profile_thread)(void); @@ -314,6 +213,28 @@ struct codec_api { int (*enc_pcm_buf_near_empty)(void); unsigned char * (*enc_get_pcm_data)(size_t size); size_t (*enc_unget_pcm_data)(size_t size); + + /* file */ + int (*PREFIX(open))(const char* pathname, int flags); + int (*close)(int fd); + ssize_t (*read)(int fd, void* buf, size_t count); + off_t (*PREFIX(lseek))(int fd, off_t offset, int whence); + ssize_t (*write)(int fd, const void* buf, size_t count); + + /* Encoder codecs adjust CPU boost themselves */ +#ifdef HAVE_ADJUSTABLE_CPU_FREQ +#ifdef CPU_BOOST_LOGGING + void (*cpu_boost_)(bool on_off,char*location,int line); +#else + void (*cpu_boost)(bool on_off); +#endif +#endif + + int (*round_value_to_list32)(unsigned long value, + const unsigned long list[], + int count, + bool signd); + #endif /* new stuff at the end, sort into place next time diff --git a/apps/codecs/lib/codeclib.c b/apps/codecs/lib/codeclib.c index 125c4663c8..7f822f49ef 100644 --- a/apps/codecs/lib/codeclib.c +++ b/apps/codecs/lib/codeclib.c @@ -104,11 +104,6 @@ int strcmp(const char *s1, const char *s2) return(ci->strcmp(s1,s2)); } -int strncasecmp(const char *s1, const char *s2, size_t n) -{ - return(ci->strncasecmp(s1,s2,n)); -} - void *memcpy(void *dest, const void *src, size_t n) { return(ci->memcpy(dest,src,n)); diff --git a/apps/codecs/lib/codeclib.h b/apps/codecs/lib/codeclib.h index 366d30e064..296c8cdae8 100644 --- a/apps/codecs/lib/codeclib.h +++ b/apps/codecs/lib/codeclib.h @@ -47,7 +47,6 @@ size_t strlen(const char *s); char *strcpy(char *dest, const char *src); char *strcat(char *dest, const char *src); int strcmp(const char *, const char *); -int strcasecmp(const char *, const char *); void qsort(void *base, size_t nmemb, size_t size, int(*compar)(const void *, const void *));