summaryrefslogtreecommitdiff
path: root/apps/plugins/codecmpa.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/codecmpa.c')
-rw-r--r--apps/plugins/codecmpa.c8
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