summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Sevakis <jethead71@rockbox.org>2011-03-16 05:38:37 +0000
committerMichael Sevakis <jethead71@rockbox.org>2011-03-16 05:38:37 +0000
commit56dd75d204f861785ca78ae1c6eb506d5f2ea7e9 (patch)
tree19809cf7976dd47513171bac706a061ef130b2b2
parentdce799641d2f75feda39b087f03a1f64620f3d6b (diff)
downloadrockbox-56dd75d204f861785ca78ae1c6eb506d5f2ea7e9.tar.gz
rockbox-56dd75d204f861785ca78ae1c6eb506d5f2ea7e9.zip
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
-rw-r--r--apps/buffering.c11
-rw-r--r--apps/buffering.h2
-rw-r--r--apps/codec_thread.c7
-rw-r--r--apps/codecs.c1
-rw-r--r--apps/codecs.h6
-rw-r--r--apps/codecs/mpa.c12
-rw-r--r--apps/plugin.c3
-rw-r--r--apps/plugin.h7
8 files changed, 12 insertions, 37 deletions
diff --git a/apps/buffering.c b/apps/buffering.c
index 0cd81df93a..f70400a1ee 100644
--- a/apps/buffering.c
+++ b/apps/buffering.c
@@ -1444,7 +1444,6 @@ ssize_t bufcuttail(int handle_id, size_t size)
1444SECONDARY EXPORTED FUNCTIONS 1444SECONDARY EXPORTED FUNCTIONS
1445============================ 1445============================
1446 1446
1447buf_get_offset
1448buf_handle_offset 1447buf_handle_offset
1449buf_request_buffer_handle 1448buf_request_buffer_handle
1450buf_set_base_handle 1449buf_set_base_handle
@@ -1457,16 +1456,6 @@ They take care of the content of the structs, and rely on the linked list
1457management functions for all the actual handle management work. 1456management functions for all the actual handle management work.
1458*/ 1457*/
1459 1458
1460/* Get a handle offset from a pointer */
1461ssize_t buf_get_offset(int handle_id, void *ptr)
1462{
1463 const struct memory_handle *h = find_handle(handle_id);
1464 if (!h)
1465 return ERR_HANDLE_NOT_FOUND;
1466
1467 return (size_t)ptr - (size_t)&buffer[h->ridx];
1468}
1469
1470ssize_t buf_handle_offset(int handle_id) 1459ssize_t buf_handle_offset(int handle_id)
1471{ 1460{
1472 const struct memory_handle *h = find_handle(handle_id); 1461 const struct memory_handle *h = find_handle(handle_id);
diff --git a/apps/buffering.h b/apps/buffering.h
index c3a9f928d1..34d6d641c7 100644
--- a/apps/buffering.h
+++ b/apps/buffering.h
@@ -91,14 +91,12 @@ ssize_t bufcuttail(int handle_id, size_t size);
91 * SECONDARY FUNCTIONS 91 * SECONDARY FUNCTIONS
92 * =================== 92 * ===================
93 * 93 *
94 * buf_get_offset: Get a handle offset from a pointer
95 * buf_handle_offset: Get the offset of the first buffered byte from the file 94 * buf_handle_offset: Get the offset of the first buffered byte from the file
96 * buf_request_buffer_handle: Request buffering of a handle 95 * buf_request_buffer_handle: Request buffering of a handle
97 * buf_set_base_handle: Tell the buffering thread which handle is currently read 96 * buf_set_base_handle: Tell the buffering thread which handle is currently read
98 * buf_used: Total amount of buffer space used (including allocated space) 97 * buf_used: Total amount of buffer space used (including allocated space)
99 ****************************************************************************/ 98 ****************************************************************************/
100 99
101ssize_t buf_get_offset(int handle_id, void *ptr);
102ssize_t buf_handle_offset(int handle_id); 100ssize_t buf_handle_offset(int handle_id);
103void buf_request_buffer_handle(int handle_id); 101void buf_request_buffer_handle(int handle_id);
104void buf_set_base_handle(int handle_id); 102void buf_set_base_handle(int handle_id);
diff --git a/apps/codec_thread.c b/apps/codec_thread.c
index 9b17d7cf42..65a7ebc7d5 100644
--- a/apps/codec_thread.c
+++ b/apps/codec_thread.c
@@ -337,12 +337,6 @@ static void codec_advance_buffer_callback(size_t amount)
337 codec_set_offset_callback(ci.curpos); 337 codec_set_offset_callback(ci.curpos);
338} 338}
339 339
340static void codec_advance_buffer_loc_callback(void *ptr)
341{
342 size_t amount = buf_get_offset(get_audio_hid(), ptr);
343 codec_advance_buffer_callback(amount);
344}
345
346static bool codec_seek_buffer_callback(size_t newpos) 340static bool codec_seek_buffer_callback(size_t newpos)
347{ 341{
348 logf("codec_seek_buffer_callback"); 342 logf("codec_seek_buffer_callback");
@@ -443,7 +437,6 @@ void codec_init_codec_api(void)
443 ci.read_filebuf = codec_filebuf_callback; 437 ci.read_filebuf = codec_filebuf_callback;
444 ci.request_buffer = codec_request_buffer_callback; 438 ci.request_buffer = codec_request_buffer_callback;
445 ci.advance_buffer = codec_advance_buffer_callback; 439 ci.advance_buffer = codec_advance_buffer_callback;
446 ci.advance_buffer_loc = codec_advance_buffer_loc_callback;
447 ci.seek_buffer = codec_seek_buffer_callback; 440 ci.seek_buffer = codec_seek_buffer_callback;
448 ci.seek_complete = codec_seek_complete_callback; 441 ci.seek_complete = codec_seek_complete_callback;
449 ci.request_next_track = codec_request_next_track_callback; 442 ci.request_next_track = codec_request_next_track_callback;
diff --git a/apps/codecs.c b/apps/codecs.c
index c9f612b3f4..28e8c2a1c0 100644
--- a/apps/codecs.c
+++ b/apps/codecs.c
@@ -93,7 +93,6 @@ struct codec_api ci = {
93 NULL, /* read_filebuf */ 93 NULL, /* read_filebuf */
94 NULL, /* request_buffer */ 94 NULL, /* request_buffer */
95 NULL, /* advance_buffer */ 95 NULL, /* advance_buffer */
96 NULL, /* advance_buffer_loc */
97 NULL, /* seek_buffer */ 96 NULL, /* seek_buffer */
98 NULL, /* seek_complete */ 97 NULL, /* seek_complete */
99 NULL, /* request_next_track */ 98 NULL, /* request_next_track */
diff --git a/apps/codecs.h b/apps/codecs.h
index 028e3614ff..daf2c8694e 100644
--- a/apps/codecs.h
+++ b/apps/codecs.h
@@ -75,12 +75,12 @@
75#define CODEC_ENC_MAGIC 0x52454E43 /* RENC */ 75#define CODEC_ENC_MAGIC 0x52454E43 /* RENC */
76 76
77/* increase this every time the api struct changes */ 77/* increase this every time the api struct changes */
78#define CODEC_API_VERSION 39 78#define CODEC_API_VERSION 40
79 79
80/* update this to latest version if a change to the api struct breaks 80/* update this to latest version if a change to the api struct breaks
81 backwards compatibility (and please take the opportunity to sort in any 81 backwards compatibility (and please take the opportunity to sort in any
82 new function which are "waiting" at the end of the function table) */ 82 new function which are "waiting" at the end of the function table) */
83#define CODEC_MIN_API_VERSION 39 83#define CODEC_MIN_API_VERSION 40
84 84
85/* codec return codes */ 85/* codec return codes */
86enum codec_status { 86enum codec_status {
@@ -134,8 +134,6 @@ struct codec_api {
134 void* (*request_buffer)(size_t *realsize, size_t reqsize); 134 void* (*request_buffer)(size_t *realsize, size_t reqsize);
135 /* Advance file buffer position by <amount> amount of bytes. */ 135 /* Advance file buffer position by <amount> amount of bytes. */
136 void (*advance_buffer)(size_t amount); 136 void (*advance_buffer)(size_t amount);
137 /* Advance file buffer to a pointer location inside file buffer. */
138 void (*advance_buffer_loc)(void *ptr);
139 /* Seek file buffer to position <newpos> beginning of file. */ 137 /* Seek file buffer to position <newpos> beginning of file. */
140 bool (*seek_buffer)(size_t newpos); 138 bool (*seek_buffer)(size_t newpos);
141 /* Codec should call this function when it has done the seeking. */ 139 /* Codec should call this function when it has done the seeking. */
diff --git a/apps/codecs/mpa.c b/apps/codecs/mpa.c
index 4d6c52f2b3..4b49775029 100644
--- a/apps/codecs/mpa.c
+++ b/apps/codecs/mpa.c
@@ -424,24 +424,22 @@ next_track:
424 424
425 /* Fill the buffer */ 425 /* Fill the buffer */
426 if (stream.next_frame) 426 if (stream.next_frame)
427 ci->advance_buffer_loc((void *)stream.next_frame); 427 ci->advance_buffer(stream.next_frame - stream.buffer);
428 else 428 else
429 ci->advance_buffer(size); 429 ci->advance_buffer(size);
430 stream.error = 0; 430 stream.error = 0; /* Must get new inputbuffer next time */
431 file_end++; 431 file_end++;
432 continue; 432 continue;
433 } else if (MAD_RECOVERABLE(stream.error)) { 433 } else if (MAD_RECOVERABLE(stream.error)) {
434 /* Probably syncing after a seek */
434 continue; 435 continue;
435 } else { 436 } else {
436 /* Some other unrecoverable error */ 437 /* Some other unrecoverable error */
437 status = CODEC_ERROR; 438 status = CODEC_ERROR;
438 break; 439 break;
439 } 440 }
440 break;
441 } 441 }
442 442
443 file_end = 0;
444
445 /* Do the pcmbuf insert here. Note, this is the PREVIOUS frame's pcm 443 /* Do the pcmbuf insert here. Note, this is the PREVIOUS frame's pcm
446 data (not the one just decoded above). When we exit the decoding 444 data (not the one just decoded above). When we exit the decoding
447 loop we will need to process the final frame that was decoded. */ 445 loop we will need to process the final frame that was decoded. */
@@ -479,9 +477,11 @@ next_track:
479 } 477 }
480 478
481 if (stream.next_frame) 479 if (stream.next_frame)
482 ci->advance_buffer_loc((void *)stream.next_frame); 480 ci->advance_buffer(stream.next_frame - stream.buffer);
483 else 481 else
484 ci->advance_buffer(size); 482 ci->advance_buffer(size);
483 stream.error = 0; /* Must get new inputbuffer next time */
484 file_end = 0;
485 485
486 framelength = synth.pcm.length - samples_to_skip; 486 framelength = synth.pcm.length - samples_to_skip;
487 if (framelength < 0) { 487 if (framelength < 0) {
diff --git a/apps/plugin.c b/apps/plugin.c
index 3807ad5d76..ea290c89a7 100644
--- a/apps/plugin.c
+++ b/apps/plugin.c
@@ -407,6 +407,7 @@ static const struct plugin_api rockbox_api = {
407 default_event_handler, 407 default_event_handler,
408 default_event_handler_ex, 408 default_event_handler_ex,
409 create_thread, 409 create_thread,
410 thread_self,
410 thread_exit, 411 thread_exit,
411 thread_wait, 412 thread_wait,
412#if (CONFIG_CODEC == SWCODEC) 413#if (CONFIG_CODEC == SWCODEC)
@@ -745,7 +746,6 @@ static const struct plugin_api rockbox_api = {
745 bufgettail, 746 bufgettail,
746 bufcuttail, 747 bufcuttail,
747 748
748 buf_get_offset,
749 buf_handle_offset, 749 buf_handle_offset,
750 buf_request_buffer_handle, 750 buf_request_buffer_handle,
751 buf_set_base_handle, 751 buf_set_base_handle,
@@ -779,7 +779,6 @@ static const struct plugin_api rockbox_api = {
779 779
780 /* new stuff at the end, sort into place next time 780 /* new stuff at the end, sort into place next time
781 the API gets incompatible */ 781 the API gets incompatible */
782 thread_self,
783}; 782};
784 783
785int plugin_load(const char* plugin, const void* parameter) 784int plugin_load(const char* plugin, const void* parameter)
diff --git a/apps/plugin.h b/apps/plugin.h
index 43b9818ffd..de720d41eb 100644
--- a/apps/plugin.h
+++ b/apps/plugin.h
@@ -145,12 +145,12 @@ void* plugin_get_buffer(size_t *buffer_size);
145#define PLUGIN_MAGIC 0x526F634B /* RocK */ 145#define PLUGIN_MAGIC 0x526F634B /* RocK */
146 146
147/* increase this every time the api struct changes */ 147/* increase this every time the api struct changes */
148#define PLUGIN_API_VERSION 201 148#define PLUGIN_API_VERSION 202
149 149
150/* update this to latest version if a change to the api struct breaks 150/* update this to latest version if a change to the api struct breaks
151 backwards compatibility (and please take the opportunity to sort in any 151 backwards compatibility (and please take the opportunity to sort in any
152 new function which are "waiting" at the end of the function table) */ 152 new function which are "waiting" at the end of the function table) */
153#define PLUGIN_MIN_API_VERSION 200 153#define PLUGIN_MIN_API_VERSION 202
154 154
155/* plugin return codes */ 155/* plugin return codes */
156/* internal returns start at 0x100 to make exit(1..255) work */ 156/* internal returns start at 0x100 to make exit(1..255) work */
@@ -479,6 +479,7 @@ struct plugin_api {
479 const char *name 479 const char *name
480 IF_PRIO(, int priority) 480 IF_PRIO(, int priority)
481 IF_COP(, unsigned int core)); 481 IF_COP(, unsigned int core));
482 unsigned int (*thread_self)(void);
482 void (*thread_exit)(void); 483 void (*thread_exit)(void);
483 void (*thread_wait)(unsigned int thread_id); 484 void (*thread_wait)(unsigned int thread_id);
484#if CONFIG_CODEC == SWCODEC 485#if CONFIG_CODEC == SWCODEC
@@ -871,7 +872,6 @@ struct plugin_api {
871 ssize_t (*bufgettail)(int handle_id, size_t size, void **data); 872 ssize_t (*bufgettail)(int handle_id, size_t size, void **data);
872 ssize_t (*bufcuttail)(int handle_id, size_t size); 873 ssize_t (*bufcuttail)(int handle_id, size_t size);
873 874
874 ssize_t (*buf_get_offset)(int handle_id, void *ptr);
875 ssize_t (*buf_handle_offset)(int handle_id); 875 ssize_t (*buf_handle_offset)(int handle_id);
876 void (*buf_request_buffer_handle)(int handle_id); 876 void (*buf_request_buffer_handle)(int handle_id);
877 void (*buf_set_base_handle)(int handle_id); 877 void (*buf_set_base_handle)(int handle_id);
@@ -909,7 +909,6 @@ struct plugin_api {
909 909
910 /* new stuff at the end, sort into place next time 910 /* new stuff at the end, sort into place next time
911 the API gets incompatible */ 911 the API gets incompatible */
912 unsigned int (*thread_self)(void);
913}; 912};
914 913
915/* plugin header */ 914/* plugin header */