1
0
Fork 0
forked from len0rd/rockbox

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
This commit is contained in:
Michael Sevakis 2012-03-04 14:44:43 -05:00
parent 534117d1e0
commit d18a5cad7f
13 changed files with 39 additions and 32 deletions

View file

@ -54,7 +54,7 @@ beep_get_more(const void **start, size_t *size)
{ {
count = MIN(count, BEEP_BUF_COUNT); count = MIN(count, BEEP_BUF_COUNT);
beep_count -= count; beep_count -= count;
*start = (unsigned char *)beep_buf; *start = beep_buf;
*size = count * 2 * sizeof (int16_t); *size = count * 2 * sizeof (int16_t);
beep_generate((void *)beep_buf, count, &beep_phase, beep_generate((void *)beep_buf, count, &beep_phase,
beep_step, beep_amplitude); beep_step, beep_amplitude);

View file

@ -42,7 +42,6 @@
#include "usb_screen.h" #include "usb_screen.h"
#include "talk.h" #include "talk.h"
#include "audio.h" #include "audio.h"
#include "mp3_playback.h"
#include "settings.h" #include "settings.h"
#include "storage.h" #include "storage.h"
#include "ata_idle_notify.h" #include "ata_idle_notify.h"
@ -88,6 +87,8 @@
#include "playback.h" #include "playback.h"
#if CONFIG_CODEC == SWCODEC #if CONFIG_CODEC == SWCODEC
#include "voice_thread.h" #include "voice_thread.h"
#else
#include "mp3_playback.h"
#endif #endif
#ifdef BOOTFILE #ifdef BOOTFILE

View file

@ -876,7 +876,7 @@ static void reset_mp3_buffer(void)
} }
/* DMA transfer end interrupt callback */ /* 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) if(playing && !paused)
{ {

View file

@ -637,8 +637,8 @@ struct plugin_api {
unsigned int band_setting); unsigned int band_setting);
#endif /* AUDIOHW_HAVE_EQ */ #endif /* AUDIOHW_HAVE_EQ */
#if (CONFIG_PLATFORM & PLATFORM_NATIVE) #if (CONFIG_PLATFORM & PLATFORM_NATIVE)
void (*mp3_play_data)(const unsigned char* start, int size, void (*mp3_play_data)(const void* start, size_t size,
void (*get_more)(unsigned char** start, size_t* size)); mp3_play_callback_t get_more);
void (*mp3_play_pause)(bool play); void (*mp3_play_pause)(bool play);
void (*mp3_play_stop)(void); void (*mp3_play_stop)(void);
bool (*mp3_is_playing)(void); bool (*mp3_is_playing)(void);

View file

@ -1268,7 +1268,7 @@ static unsigned char beep[]={255,
111,181,184,144, 17,148, 21,101,166,227,100, 86, 85, 85, 85}; 111,181,184,144, 17,148, 21,101,166,227,100, 86, 85, 85, 85};
/* callback to request more mp3 data */ /* 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 */ *start = beep; /* give it the same frame again */
*size = sizeof(beep); *size = sizeof(beep);

View file

@ -683,7 +683,7 @@ int bpm_step_counter = 0;
#define MET_IS_PLAYING rb->mp3_is_playing() #define MET_IS_PLAYING rb->mp3_is_playing()
#define MET_PLAY_STOP rb->mp3_play_stop() #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 */ (void)start; /* unused parameter, avoid warning */
*size = 0; /* end of data */ *size = 0; /* end of data */

View file

@ -448,7 +448,7 @@ static void timer4_isr(void)
/* ISR function to get more mp3 data */ /* 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 available;
int advance; int advance;

View file

@ -401,8 +401,8 @@ load_err:
} }
/* called in ISR context if mp3 data got consumed */ /* called in ISR context (on HWCODEC) if mp3 data got consumed */
static void mp3_callback(unsigned char** start, size_t* size) static void mp3_callback(const void** start, size_t* size)
{ {
queue[queue_read].len -= sent; /* we completed this */ queue[queue_read].len -= sent; /* we completed this */
queue[queue_read].buf += sent; queue[queue_read].buf += sent;

View file

@ -117,9 +117,9 @@ enum voice_thread_messages
struct voice_info struct voice_info
{ {
/* Callback to get more clips */ /* Callback to get more clips */
void (*get_more)(unsigned char** start, size_t* size); mp3_play_callback_t get_more;
/* Start of clip */ /* Start of clip */
unsigned char *start; const void *start;
/* Size of clip */ /* Size of clip */
size_t size; 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 */ /* Stop any current clip and start playing a new one */
void mp3_play_data(const unsigned char* start, int size, void mp3_play_data(const void *start, size_t size,
void (*get_more)(unsigned char** 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 = struct voice_info voice_clip =
{ {
.get_more = get_more, .get_more = get_more,
.start = (unsigned char *)start, .start = start,
.size = size, .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); td->st = speex_decoder_init(&speex_wb_mode);
/* Make bit buffer use our own buffer */ /* 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); speex_decoder_ctl(td->st, SPEEX_GET_LOOKAHEAD, &td->lookahead);
return VOICE_STATE_DECODE; 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) if (td->vi.get_more != NULL)
td->vi.get_more(&td->vi.start, &td->vi.size); 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 */ /* 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 */ /* Don't skip any samples when we're stringing clips together */
td->lookahead = 0; td->lookahead = 0;
} }

View file

@ -23,8 +23,10 @@
#include "config.h" #include "config.h"
void mp3_play_data(const unsigned char* start, int size, typedef void (*mp3_play_callback_t)(const void **start, size_t *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_stop(void); void mp3_play_stop(void);
void mp3_play_pause(bool play); void mp3_play_pause(bool play);
bool mp3_is_playing(void); bool mp3_is_playing(void);

View file

@ -26,6 +26,9 @@
#include <stdbool.h> #include <stdbool.h>
/* callback fn */
typedef void (*mp3_play_callback_t)(const void **start, size_t* size);
/* functions formerly in mpeg.c */ /* functions formerly in mpeg.c */
void mp3_init(int volume, int bass, int treble, int balance, int loudness, void mp3_init(int volume, int bass, int treble, int balance, int loudness,
int avc, int channel_config, int stereo_width, int avc, int channel_config, int stereo_width,
@ -42,9 +45,8 @@ void demand_irq_enable(bool on);
#if CONFIG_CODEC == MAS3587F #if CONFIG_CODEC == MAS3587F
void mp3_play_init(void); void mp3_play_init(void);
#endif #endif
void mp3_play_data(const unsigned char* start, int size, void mp3_play_data(const void* start, size_t size,
void (*get_more)(unsigned char** start, size_t* size) /* callback fn */ mp3_play_callback_t get_more);
);
void mp3_play_pause(bool play); void mp3_play_pause(bool play);
bool mp3_pause_done(void); bool mp3_pause_done(void);
void mp3_play_stop(void); void mp3_play_stop(void);

View file

@ -53,7 +53,7 @@ static bool paused; /* playback is paused */
static bool playing; /* We are playing an MP3 stream */ static bool playing; /* We are playing an MP3 stream */
/* the registered callback function to ask for more mp3 data */ /* the registered callback function to ask for more mp3 data */
static void (*callback_for_more)(unsigned char**, size_t*); static mp3_play_callback_t callback_for_more;
/* list of tracks in memory */ /* list of tracks in memory */
#define MAX_ID3_TAGS (1<<4) /* Must be power of 2 */ #define MAX_ID3_TAGS (1<<4) /* Must be power of 2 */
@ -156,7 +156,7 @@ static void play_tick(void)
void DEI3(void) __attribute__((interrupt_handler)); void DEI3(void) __attribute__((interrupt_handler));
void DEI3(void) void DEI3(void)
{ {
unsigned char* start; const void* start;
size_t size = 0; size_t size = 0;
if (callback_for_more != NULL) if (callback_for_more != NULL)
@ -469,9 +469,8 @@ void mp3_play_init(void)
} }
#endif #endif
void mp3_play_data(const unsigned char* start, int size, void mp3_play_data(const void* start, size_t size,
void (*get_more)(unsigned char** start, size_t* size) /* callback fn */ mp3_play_callback_t get_more)
)
{ {
/* init DMA */ /* init DMA */
DAR3 = 0x5FFFEC3; DAR3 = 0x5FFFEC3;

View file

@ -36,6 +36,8 @@
static bool storage_spinning = false; static bool storage_spinning = false;
#if CONFIG_CODEC != SWCODEC #if CONFIG_CODEC != SWCODEC
#include "mp3_playback.h"
void audio_set_buffer_margin(int seconds) void audio_set_buffer_margin(int seconds)
{ {
(void)seconds; (void)seconds;
@ -92,9 +94,8 @@ unsigned char* mp3_get_pos(void)
return NULL; return NULL;
} }
void mp3_play_data(const unsigned char* start, int size, void mp3_play_data(const void* start, size_t size,
void (*get_more)(unsigned char** start, size_t* size) /* callback fn */ mp3_play_callback_t get_more)
)
{ {
(void)start; (void)size; (void)get_more; (void)start; (void)size; (void)get_more;
} }