diff options
Diffstat (limited to 'apps/plugins/codecmpa.c')
-rw-r--r-- | apps/plugins/codecmpa.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/apps/plugins/codecmpa.c b/apps/plugins/codecmpa.c index 88f6b8c624..bf6cf3f87d 100644 --- a/apps/plugins/codecmpa.c +++ b/apps/plugins/codecmpa.c | |||
@@ -198,6 +198,7 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parm) | |||
198 | int fd; | 198 | int fd; |
199 | #endif | 199 | #endif |
200 | int i; | 200 | int i; |
201 | int yieldcounter = 0; | ||
201 | 202 | ||
202 | /* Generic plugin inititialisation */ | 203 | /* Generic plugin inititialisation */ |
203 | 204 | ||
@@ -217,6 +218,7 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parm) | |||
217 | /* Create a decoder instance */ | 218 | /* Create a decoder instance */ |
218 | 219 | ||
219 | ci->configure(CODEC_SET_FILEBUF_LIMIT, (int *)(1024*1024*2)); | 220 | ci->configure(CODEC_SET_FILEBUF_LIMIT, (int *)(1024*1024*2)); |
221 | ci->configure(CODEC_SET_FILEBUF_CHUNKSIZE, (int *)(1024*16)); | ||
220 | 222 | ||
221 | next_track: | 223 | next_track: |
222 | memset(&Stream, 0, sizeof(struct mad_stream)); | 224 | memset(&Stream, 0, sizeof(struct mad_stream)); |
@@ -379,10 +381,14 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parm) | |||
379 | goto song_end; | 381 | goto song_end; |
380 | } | 382 | } |
381 | 383 | ||
384 | if (yieldcounter++ == 200) { | ||
385 | rb->yield(); | ||
386 | yieldcounter = 0; | ||
387 | } | ||
388 | |||
382 | /* Flush the buffer if it is full. */ | 389 | /* Flush the buffer if it is full. */ |
383 | if(OutputPtr==OutputBufferEnd) | 390 | if(OutputPtr==OutputBufferEnd) |
384 | { | 391 | { |
385 | rb->yield(); | ||
386 | #ifdef DEBUG_GAPLESS | 392 | #ifdef DEBUG_GAPLESS |
387 | rb->write(fd, OutputBuffer, OUTPUT_BUFFER_SIZE); | 393 | rb->write(fd, OutputBuffer, OUTPUT_BUFFER_SIZE); |
388 | #endif | 394 | #endif |