mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-10-13 18:17:39 -04:00
Purge buffer and codec APIs existing exclusively in support of mpa.codec and fix that to not require them: buf_get_offset and ci.advance_buffer_loc. Sort APIs; everything must become incompatible. :(
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29595 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
dce799641d
commit
56dd75d204
8 changed files with 12 additions and 37 deletions
|
@ -1444,7 +1444,6 @@ ssize_t bufcuttail(int handle_id, size_t size)
|
||||||
SECONDARY EXPORTED FUNCTIONS
|
SECONDARY EXPORTED FUNCTIONS
|
||||||
============================
|
============================
|
||||||
|
|
||||||
buf_get_offset
|
|
||||||
buf_handle_offset
|
buf_handle_offset
|
||||||
buf_request_buffer_handle
|
buf_request_buffer_handle
|
||||||
buf_set_base_handle
|
buf_set_base_handle
|
||||||
|
@ -1457,16 +1456,6 @@ They take care of the content of the structs, and rely on the linked list
|
||||||
management functions for all the actual handle management work.
|
management functions for all the actual handle management work.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Get a handle offset from a pointer */
|
|
||||||
ssize_t buf_get_offset(int handle_id, void *ptr)
|
|
||||||
{
|
|
||||||
const struct memory_handle *h = find_handle(handle_id);
|
|
||||||
if (!h)
|
|
||||||
return ERR_HANDLE_NOT_FOUND;
|
|
||||||
|
|
||||||
return (size_t)ptr - (size_t)&buffer[h->ridx];
|
|
||||||
}
|
|
||||||
|
|
||||||
ssize_t buf_handle_offset(int handle_id)
|
ssize_t buf_handle_offset(int handle_id)
|
||||||
{
|
{
|
||||||
const struct memory_handle *h = find_handle(handle_id);
|
const struct memory_handle *h = find_handle(handle_id);
|
||||||
|
|
|
@ -91,14 +91,12 @@ ssize_t bufcuttail(int handle_id, size_t size);
|
||||||
* SECONDARY FUNCTIONS
|
* SECONDARY FUNCTIONS
|
||||||
* ===================
|
* ===================
|
||||||
*
|
*
|
||||||
* buf_get_offset: Get a handle offset from a pointer
|
|
||||||
* buf_handle_offset: Get the offset of the first buffered byte from the file
|
* buf_handle_offset: Get the offset of the first buffered byte from the file
|
||||||
* buf_request_buffer_handle: Request buffering of a handle
|
* buf_request_buffer_handle: Request buffering of a handle
|
||||||
* buf_set_base_handle: Tell the buffering thread which handle is currently read
|
* buf_set_base_handle: Tell the buffering thread which handle is currently read
|
||||||
* buf_used: Total amount of buffer space used (including allocated space)
|
* buf_used: Total amount of buffer space used (including allocated space)
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
ssize_t buf_get_offset(int handle_id, void *ptr);
|
|
||||||
ssize_t buf_handle_offset(int handle_id);
|
ssize_t buf_handle_offset(int handle_id);
|
||||||
void buf_request_buffer_handle(int handle_id);
|
void buf_request_buffer_handle(int handle_id);
|
||||||
void buf_set_base_handle(int handle_id);
|
void buf_set_base_handle(int handle_id);
|
||||||
|
|
|
@ -337,12 +337,6 @@ static void codec_advance_buffer_callback(size_t amount)
|
||||||
codec_set_offset_callback(ci.curpos);
|
codec_set_offset_callback(ci.curpos);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void codec_advance_buffer_loc_callback(void *ptr)
|
|
||||||
{
|
|
||||||
size_t amount = buf_get_offset(get_audio_hid(), ptr);
|
|
||||||
codec_advance_buffer_callback(amount);
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool codec_seek_buffer_callback(size_t newpos)
|
static bool codec_seek_buffer_callback(size_t newpos)
|
||||||
{
|
{
|
||||||
logf("codec_seek_buffer_callback");
|
logf("codec_seek_buffer_callback");
|
||||||
|
@ -443,7 +437,6 @@ void codec_init_codec_api(void)
|
||||||
ci.read_filebuf = codec_filebuf_callback;
|
ci.read_filebuf = codec_filebuf_callback;
|
||||||
ci.request_buffer = codec_request_buffer_callback;
|
ci.request_buffer = codec_request_buffer_callback;
|
||||||
ci.advance_buffer = codec_advance_buffer_callback;
|
ci.advance_buffer = codec_advance_buffer_callback;
|
||||||
ci.advance_buffer_loc = codec_advance_buffer_loc_callback;
|
|
||||||
ci.seek_buffer = codec_seek_buffer_callback;
|
ci.seek_buffer = codec_seek_buffer_callback;
|
||||||
ci.seek_complete = codec_seek_complete_callback;
|
ci.seek_complete = codec_seek_complete_callback;
|
||||||
ci.request_next_track = codec_request_next_track_callback;
|
ci.request_next_track = codec_request_next_track_callback;
|
||||||
|
|
|
@ -93,7 +93,6 @@ struct codec_api ci = {
|
||||||
NULL, /* read_filebuf */
|
NULL, /* read_filebuf */
|
||||||
NULL, /* request_buffer */
|
NULL, /* request_buffer */
|
||||||
NULL, /* advance_buffer */
|
NULL, /* advance_buffer */
|
||||||
NULL, /* advance_buffer_loc */
|
|
||||||
NULL, /* seek_buffer */
|
NULL, /* seek_buffer */
|
||||||
NULL, /* seek_complete */
|
NULL, /* seek_complete */
|
||||||
NULL, /* request_next_track */
|
NULL, /* request_next_track */
|
||||||
|
|
|
@ -75,12 +75,12 @@
|
||||||
#define CODEC_ENC_MAGIC 0x52454E43 /* RENC */
|
#define CODEC_ENC_MAGIC 0x52454E43 /* RENC */
|
||||||
|
|
||||||
/* increase this every time the api struct changes */
|
/* increase this every time the api struct changes */
|
||||||
#define CODEC_API_VERSION 39
|
#define CODEC_API_VERSION 40
|
||||||
|
|
||||||
/* update this to latest version if a change to the api struct breaks
|
/* update this to latest version if a change to the api struct breaks
|
||||||
backwards compatibility (and please take the opportunity to sort in any
|
backwards compatibility (and please take the opportunity to sort in any
|
||||||
new function which are "waiting" at the end of the function table) */
|
new function which are "waiting" at the end of the function table) */
|
||||||
#define CODEC_MIN_API_VERSION 39
|
#define CODEC_MIN_API_VERSION 40
|
||||||
|
|
||||||
/* codec return codes */
|
/* codec return codes */
|
||||||
enum codec_status {
|
enum codec_status {
|
||||||
|
@ -134,8 +134,6 @@ struct codec_api {
|
||||||
void* (*request_buffer)(size_t *realsize, size_t reqsize);
|
void* (*request_buffer)(size_t *realsize, size_t reqsize);
|
||||||
/* Advance file buffer position by <amount> amount of bytes. */
|
/* Advance file buffer position by <amount> amount of bytes. */
|
||||||
void (*advance_buffer)(size_t amount);
|
void (*advance_buffer)(size_t amount);
|
||||||
/* Advance file buffer to a pointer location inside file buffer. */
|
|
||||||
void (*advance_buffer_loc)(void *ptr);
|
|
||||||
/* Seek file buffer to position <newpos> beginning of file. */
|
/* Seek file buffer to position <newpos> beginning of file. */
|
||||||
bool (*seek_buffer)(size_t newpos);
|
bool (*seek_buffer)(size_t newpos);
|
||||||
/* Codec should call this function when it has done the seeking. */
|
/* Codec should call this function when it has done the seeking. */
|
||||||
|
|
|
@ -424,24 +424,22 @@ next_track:
|
||||||
|
|
||||||
/* Fill the buffer */
|
/* Fill the buffer */
|
||||||
if (stream.next_frame)
|
if (stream.next_frame)
|
||||||
ci->advance_buffer_loc((void *)stream.next_frame);
|
ci->advance_buffer(stream.next_frame - stream.buffer);
|
||||||
else
|
else
|
||||||
ci->advance_buffer(size);
|
ci->advance_buffer(size);
|
||||||
stream.error = 0;
|
stream.error = 0; /* Must get new inputbuffer next time */
|
||||||
file_end++;
|
file_end++;
|
||||||
continue;
|
continue;
|
||||||
} else if (MAD_RECOVERABLE(stream.error)) {
|
} else if (MAD_RECOVERABLE(stream.error)) {
|
||||||
|
/* Probably syncing after a seek */
|
||||||
continue;
|
continue;
|
||||||
} else {
|
} else {
|
||||||
/* Some other unrecoverable error */
|
/* Some other unrecoverable error */
|
||||||
status = CODEC_ERROR;
|
status = CODEC_ERROR;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
file_end = 0;
|
|
||||||
|
|
||||||
/* Do the pcmbuf insert here. Note, this is the PREVIOUS frame's pcm
|
/* Do the pcmbuf insert here. Note, this is the PREVIOUS frame's pcm
|
||||||
data (not the one just decoded above). When we exit the decoding
|
data (not the one just decoded above). When we exit the decoding
|
||||||
loop we will need to process the final frame that was decoded. */
|
loop we will need to process the final frame that was decoded. */
|
||||||
|
@ -479,9 +477,11 @@ next_track:
|
||||||
}
|
}
|
||||||
|
|
||||||
if (stream.next_frame)
|
if (stream.next_frame)
|
||||||
ci->advance_buffer_loc((void *)stream.next_frame);
|
ci->advance_buffer(stream.next_frame - stream.buffer);
|
||||||
else
|
else
|
||||||
ci->advance_buffer(size);
|
ci->advance_buffer(size);
|
||||||
|
stream.error = 0; /* Must get new inputbuffer next time */
|
||||||
|
file_end = 0;
|
||||||
|
|
||||||
framelength = synth.pcm.length - samples_to_skip;
|
framelength = synth.pcm.length - samples_to_skip;
|
||||||
if (framelength < 0) {
|
if (framelength < 0) {
|
||||||
|
|
|
@ -407,6 +407,7 @@ static const struct plugin_api rockbox_api = {
|
||||||
default_event_handler,
|
default_event_handler,
|
||||||
default_event_handler_ex,
|
default_event_handler_ex,
|
||||||
create_thread,
|
create_thread,
|
||||||
|
thread_self,
|
||||||
thread_exit,
|
thread_exit,
|
||||||
thread_wait,
|
thread_wait,
|
||||||
#if (CONFIG_CODEC == SWCODEC)
|
#if (CONFIG_CODEC == SWCODEC)
|
||||||
|
@ -745,7 +746,6 @@ static const struct plugin_api rockbox_api = {
|
||||||
bufgettail,
|
bufgettail,
|
||||||
bufcuttail,
|
bufcuttail,
|
||||||
|
|
||||||
buf_get_offset,
|
|
||||||
buf_handle_offset,
|
buf_handle_offset,
|
||||||
buf_request_buffer_handle,
|
buf_request_buffer_handle,
|
||||||
buf_set_base_handle,
|
buf_set_base_handle,
|
||||||
|
@ -779,7 +779,6 @@ static const struct plugin_api rockbox_api = {
|
||||||
|
|
||||||
/* new stuff at the end, sort into place next time
|
/* new stuff at the end, sort into place next time
|
||||||
the API gets incompatible */
|
the API gets incompatible */
|
||||||
thread_self,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
int plugin_load(const char* plugin, const void* parameter)
|
int plugin_load(const char* plugin, const void* parameter)
|
||||||
|
|
|
@ -145,12 +145,12 @@ void* plugin_get_buffer(size_t *buffer_size);
|
||||||
#define PLUGIN_MAGIC 0x526F634B /* RocK */
|
#define PLUGIN_MAGIC 0x526F634B /* RocK */
|
||||||
|
|
||||||
/* increase this every time the api struct changes */
|
/* increase this every time the api struct changes */
|
||||||
#define PLUGIN_API_VERSION 201
|
#define PLUGIN_API_VERSION 202
|
||||||
|
|
||||||
/* update this to latest version if a change to the api struct breaks
|
/* update this to latest version if a change to the api struct breaks
|
||||||
backwards compatibility (and please take the opportunity to sort in any
|
backwards compatibility (and please take the opportunity to sort in any
|
||||||
new function which are "waiting" at the end of the function table) */
|
new function which are "waiting" at the end of the function table) */
|
||||||
#define PLUGIN_MIN_API_VERSION 200
|
#define PLUGIN_MIN_API_VERSION 202
|
||||||
|
|
||||||
/* plugin return codes */
|
/* plugin return codes */
|
||||||
/* internal returns start at 0x100 to make exit(1..255) work */
|
/* internal returns start at 0x100 to make exit(1..255) work */
|
||||||
|
@ -479,6 +479,7 @@ struct plugin_api {
|
||||||
const char *name
|
const char *name
|
||||||
IF_PRIO(, int priority)
|
IF_PRIO(, int priority)
|
||||||
IF_COP(, unsigned int core));
|
IF_COP(, unsigned int core));
|
||||||
|
unsigned int (*thread_self)(void);
|
||||||
void (*thread_exit)(void);
|
void (*thread_exit)(void);
|
||||||
void (*thread_wait)(unsigned int thread_id);
|
void (*thread_wait)(unsigned int thread_id);
|
||||||
#if CONFIG_CODEC == SWCODEC
|
#if CONFIG_CODEC == SWCODEC
|
||||||
|
@ -871,7 +872,6 @@ struct plugin_api {
|
||||||
ssize_t (*bufgettail)(int handle_id, size_t size, void **data);
|
ssize_t (*bufgettail)(int handle_id, size_t size, void **data);
|
||||||
ssize_t (*bufcuttail)(int handle_id, size_t size);
|
ssize_t (*bufcuttail)(int handle_id, size_t size);
|
||||||
|
|
||||||
ssize_t (*buf_get_offset)(int handle_id, void *ptr);
|
|
||||||
ssize_t (*buf_handle_offset)(int handle_id);
|
ssize_t (*buf_handle_offset)(int handle_id);
|
||||||
void (*buf_request_buffer_handle)(int handle_id);
|
void (*buf_request_buffer_handle)(int handle_id);
|
||||||
void (*buf_set_base_handle)(int handle_id);
|
void (*buf_set_base_handle)(int handle_id);
|
||||||
|
@ -909,7 +909,6 @@ struct plugin_api {
|
||||||
|
|
||||||
/* new stuff at the end, sort into place next time
|
/* new stuff at the end, sort into place next time
|
||||||
the API gets incompatible */
|
the API gets incompatible */
|
||||||
unsigned int (*thread_self)(void);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/* plugin header */
|
/* plugin header */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue