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 88f6b8c..bf6cf3f 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)
int fd;
#endif
int i;
+ int yieldcounter = 0;
/* Generic plugin inititialisation */
@@ -217,6 +218,7 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parm)
/* Create a decoder instance */
ci->configure(CODEC_SET_FILEBUF_LIMIT, (int *)(1024*1024*2));
+ ci->configure(CODEC_SET_FILEBUF_CHUNKSIZE, (int *)(1024*16));
next_track:
memset(&Stream, 0, sizeof(struct mad_stream));
@@ -379,10 +381,14 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parm)
goto song_end;
}
+ if (yieldcounter++ == 200) {
+ rb->yield();
+ yieldcounter = 0;
+ }
+
/* Flush the buffer if it is full. */
if(OutputPtr==OutputBufferEnd)
{
- rb->yield();
#ifdef DEBUG_GAPLESS
rb->write(fd, OutputBuffer, OUTPUT_BUFFER_SIZE);
#endif