From d18a5cad7f002b2f67385e57118048ea3db185a6 Mon Sep 17 00:00:00 2001 From: Michael Sevakis Date: Sun, 4 Mar 2012 14:44:43 -0500 Subject: Tweak paramters of mp3_play_data and callback. Use generic void * and size_t and make mp3_play_data and its callback agree on types. Use mp3_play_callback_t instead of prototyping right in the function call (so it's not so messy to look at). Change doesn't appear to require plugin API version increment. Change-Id: Idcab2740ee316a2beb6e0a87b8f4934d9d6b3dd8 --- apps/beep.c | 2 +- apps/misc.c | 3 ++- apps/mpeg.c | 2 +- apps/plugin.h | 4 ++-- apps/plugins/chip8.c | 2 +- apps/plugins/metronome.c | 2 +- apps/plugins/video.c | 2 +- apps/talk.c | 4 ++-- apps/voice_thread.c | 20 +++++++++++--------- apps/voice_thread.h | 6 ++++-- 10 files changed, 26 insertions(+), 21 deletions(-) (limited to 'apps') diff --git a/apps/beep.c b/apps/beep.c index 3b02e5d8a3..0152900bfc 100644 --- a/apps/beep.c +++ b/apps/beep.c @@ -54,7 +54,7 @@ beep_get_more(const void **start, size_t *size) { count = MIN(count, BEEP_BUF_COUNT); beep_count -= count; - *start = (unsigned char *)beep_buf; + *start = beep_buf; *size = count * 2 * sizeof (int16_t); beep_generate((void *)beep_buf, count, &beep_phase, beep_step, beep_amplitude); diff --git a/apps/misc.c b/apps/misc.c index ca99a1d9ac..3cb314fc51 100644 --- a/apps/misc.c +++ b/apps/misc.c @@ -42,7 +42,6 @@ #include "usb_screen.h" #include "talk.h" #include "audio.h" -#include "mp3_playback.h" #include "settings.h" #include "storage.h" #include "ata_idle_notify.h" @@ -88,6 +87,8 @@ #include "playback.h" #if CONFIG_CODEC == SWCODEC #include "voice_thread.h" +#else +#include "mp3_playback.h" #endif #ifdef BOOTFILE diff --git a/apps/mpeg.c b/apps/mpeg.c index b3e79aadd9..0ecf68fc53 100644 --- a/apps/mpeg.c +++ b/apps/mpeg.c @@ -876,7 +876,7 @@ static void reset_mp3_buffer(void) } /* DMA transfer end interrupt callback */ -static void transfer_end(unsigned char** ppbuf, size_t* psize) +static void transfer_end(const void** ppbuf, size_t* psize) { if(playing && !paused) { diff --git a/apps/plugin.h b/apps/plugin.h index cd2440abdc..8123414ff0 100644 --- a/apps/plugin.h +++ b/apps/plugin.h @@ -637,8 +637,8 @@ struct plugin_api { unsigned int band_setting); #endif /* AUDIOHW_HAVE_EQ */ #if (CONFIG_PLATFORM & PLATFORM_NATIVE) - void (*mp3_play_data)(const unsigned char* start, int size, - void (*get_more)(unsigned char** start, size_t* size)); + void (*mp3_play_data)(const void* start, size_t size, + mp3_play_callback_t get_more); void (*mp3_play_pause)(bool play); void (*mp3_play_stop)(void); bool (*mp3_is_playing)(void); diff --git a/apps/plugins/chip8.c b/apps/plugins/chip8.c index 0e1b9c5213..b2faed5d80 100644 --- a/apps/plugins/chip8.c +++ b/apps/plugins/chip8.c @@ -1268,7 +1268,7 @@ static unsigned char beep[]={255, 111,181,184,144, 17,148, 21,101,166,227,100, 86, 85, 85, 85}; /* callback to request more mp3 data */ -static void callback(unsigned char** start, size_t* size) +static void callback(const void** start, size_t* size) { *start = beep; /* give it the same frame again */ *size = sizeof(beep); diff --git a/apps/plugins/metronome.c b/apps/plugins/metronome.c index 297405571f..54af82fa76 100644 --- a/apps/plugins/metronome.c +++ b/apps/plugins/metronome.c @@ -683,7 +683,7 @@ int bpm_step_counter = 0; #define MET_IS_PLAYING rb->mp3_is_playing() #define MET_PLAY_STOP rb->mp3_play_stop() -static void callback(unsigned char** start, size_t* size) +static void callback(const void** start, size_t* size) { (void)start; /* unused parameter, avoid warning */ *size = 0; /* end of data */ diff --git a/apps/plugins/video.c b/apps/plugins/video.c index 9053ae7fb0..6a66324a79 100644 --- a/apps/plugins/video.c +++ b/apps/plugins/video.c @@ -448,7 +448,7 @@ static void timer4_isr(void) /* ISR function to get more mp3 data */ -static void GetMoreMp3(unsigned char** start, size_t* size) +static void GetMoreMp3(const void** start, size_t* size) { int available; int advance; diff --git a/apps/talk.c b/apps/talk.c index ba2050a9ca..4b0975083d 100644 --- a/apps/talk.c +++ b/apps/talk.c @@ -401,8 +401,8 @@ load_err: } -/* called in ISR context if mp3 data got consumed */ -static void mp3_callback(unsigned char** start, size_t* size) +/* called in ISR context (on HWCODEC) if mp3 data got consumed */ +static void mp3_callback(const void** start, size_t* size) { queue[queue_read].len -= sent; /* we completed this */ queue[queue_read].buf += sent; diff --git a/apps/voice_thread.c b/apps/voice_thread.c index 5d23a74cbc..56d67a2284 100644 --- a/apps/voice_thread.c +++ b/apps/voice_thread.c @@ -117,9 +117,9 @@ enum voice_thread_messages struct voice_info { /* Callback to get more clips */ - void (*get_more)(unsigned char** start, size_t* size); + mp3_play_callback_t get_more; /* Start of clip */ - unsigned char *start; + const void *start; /* Size of clip */ size_t size; }; @@ -200,15 +200,15 @@ static void voice_buf_commit(size_t size) } /* Stop any current clip and start playing a new one */ -void mp3_play_data(const unsigned char* start, int size, - void (*get_more)(unsigned char** start, size_t* size)) +void mp3_play_data(const void *start, size_t size, + mp3_play_callback_t get_more) { - if (get_more != NULL && start != NULL && (ssize_t)size > 0) + if (get_more != NULL && start != NULL && size > 0) { struct voice_info voice_clip = { .get_more = get_more, - .start = (unsigned char *)start, + .start = start, .size = size, }; @@ -312,7 +312,8 @@ static enum voice_state voice_message(struct voice_thread_data *td) td->st = speex_decoder_init(&speex_wb_mode); /* Make bit buffer use our own buffer */ - speex_bits_set_bit_buffer(&td->bits, td->vi.start, td->vi.size); + speex_bits_set_bit_buffer(&td->bits, (void *)td->vi.start, + td->vi.size); speex_decoder_ctl(td->st, SPEEX_GET_LOOKAHEAD, &td->lookahead); return VOICE_STATE_DECODE; @@ -361,10 +362,11 @@ static enum voice_state voice_decode(struct voice_thread_data *td) if (td->vi.get_more != NULL) td->vi.get_more(&td->vi.start, &td->vi.size); - if (td->vi.start != NULL && (ssize_t)td->vi.size > 0) + if (td->vi.start != NULL && td->vi.size > 0) { /* Make bit buffer use our own buffer */ - speex_bits_set_bit_buffer(&td->bits, td->vi.start, td->vi.size); + speex_bits_set_bit_buffer(&td->bits, (void *)td->vi.start, + td->vi.size); /* Don't skip any samples when we're stringing clips together */ td->lookahead = 0; } diff --git a/apps/voice_thread.h b/apps/voice_thread.h index 49b2f3f930..4e4af1fc5c 100644 --- a/apps/voice_thread.h +++ b/apps/voice_thread.h @@ -23,8 +23,10 @@ #include "config.h" -void mp3_play_data(const unsigned char* start, int size, - void (*get_more)(unsigned char** start, size_t* size)); +typedef void (*mp3_play_callback_t)(const void **start, size_t *size); + +void mp3_play_data(const void *start, size_t size, + mp3_play_callback_t get_more); void mp3_play_stop(void); void mp3_play_pause(bool play); bool mp3_is_playing(void); -- cgit v1.2.3