Codec memory reorganization
Based on a patch by Tomasz Malesinski
* Merge Codec buffer and Malloc buffer into one large buffer.
* The new merged buffer is now 1MB on targets with lots of memory.
* Renamed codec_get_memory to codec_get_buffer and made it behave more. 
like plugin_get_buffer.
* Bumped Codec api and min api versions.


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18834 a1c6a512-1295-4272-9138-f99709370657
diff --git a/apps/codecs.c b/apps/codecs.c
index 417b546..8e9e55a 100644
--- a/apps/codecs.c
+++ b/apps/codecs.c
@@ -66,6 +66,8 @@
 extern unsigned char codecbuf[];
 #endif
 
+size_t codec_size;
+
 extern void* plugin_get_audio_buffer(size_t *buffer_size);
 
 struct codec_api ci = {
@@ -78,7 +80,7 @@
     0, /* new_track */
     0, /* seek_time */
     NULL, /* struct dsp_config *dsp */
-    NULL, /* get_codec_memory */
+    NULL, /* codec_get_buffer */
     NULL, /* pcmbuf_insert */
     NULL, /* set_elapsed */
     NULL, /* read_filebuf */
@@ -193,6 +195,9 @@
         logf("codec header error");
         return CODEC_ERROR;
     }
+
+    codec_size = hdr->end_addr - codecbuf;
+
 #else /* SIMULATOR */
     void *pd;
     
@@ -211,6 +216,9 @@
         sim_codec_close(pd);
         return CODEC_ERROR;
     }
+
+    codec_size = codecbuf - codecbuf;
+
 #endif /* SIMULATOR */
     if (hdr->api_version > CODEC_API_VERSION
         || hdr->api_version < CODEC_MIN_API_VERSION) {
@@ -226,7 +234,8 @@
     return status;
 }
 
-int codec_load_buf(unsigned int hid, struct codec_api *api) {
+int codec_load_buf(unsigned int hid, struct codec_api *api)
+{
     int rc;
     rc = bufread(hid, CODEC_SIZE, codecbuf);
     if (rc < 0) {
diff --git a/apps/codecs.h b/apps/codecs.h
index becb73c..6d8c101 100644
--- a/apps/codecs.h
+++ b/apps/codecs.h
@@ -82,12 +82,12 @@
 #define CODEC_ENC_MAGIC 0x52454E43 /* RENC */
 
 /* increase this every time the api struct changes */
-#define CODEC_API_VERSION 25
+#define CODEC_API_VERSION 26
 
 /* update this to latest version if a change to the api struct breaks
    backwards compatibility (and please take the opportunity to sort in any
    new function which are "waiting" at the end of the function table) */
-#define CODEC_MIN_API_VERSION 25
+#define CODEC_MIN_API_VERSION 26
 
 /* codec return codes */
 enum codec_status {
@@ -125,7 +125,7 @@
     struct dsp_config *dsp;
     
     /* Returns buffer to malloc array. Only codeclib should need this. */
-    void* (*get_codec_memory)(size_t *size);
+    void* (*codec_get_buffer)(size_t *size);
     /* Insert PCM data into audio buffer for playback. Playback will start
        automatically. */
     bool (*pcmbuf_insert)(const void *ch1, const void *ch2, int count);
@@ -256,6 +256,9 @@
     enum codec_status(*entry_point)(struct codec_api*);
 };
 
+extern unsigned char codecbuf[];
+extern size_t codec_size;
+
 #ifdef CODEC
 #ifndef SIMULATOR
 /* plugin_* is correct, codecs use the plugin linker script */
diff --git a/apps/codecs/Tremor/oggmalloc.c b/apps/codecs/Tremor/oggmalloc.c
index d7e903b..b11eaa5 100644
--- a/apps/codecs/Tremor/oggmalloc.c
+++ b/apps/codecs/Tremor/oggmalloc.c
@@ -5,7 +5,7 @@
 
 void ogg_malloc_init(void)
 {
-    mallocbuf = ci->get_codec_memory(&bufsize);
+    mallocbuf = ci->codec_get_buffer(&bufsize);
     tmp_ptr = bufsize & ~3;
     mem_ptr = 0;
 }
diff --git a/apps/codecs/lib/codeclib.c b/apps/codecs/lib/codeclib.c
index e537995..6e11eb1 100644
--- a/apps/codecs/lib/codeclib.c
+++ b/apps/codecs/lib/codeclib.c
@@ -36,7 +36,7 @@
 int codec_init(void)
 {
     mem_ptr = 0;
-    mallocbuf = (unsigned char *)ci->get_codec_memory((size_t *)&bufsize);
+    mallocbuf = (unsigned char *)ci->codec_get_buffer((size_t *)&bufsize);
   
     return 0;
 }
diff --git a/apps/codecs/lib/codeclib.h b/apps/codecs/lib/codeclib.h
index 87cc926..744accb 100644
--- a/apps/codecs/lib/codeclib.h
+++ b/apps/codecs/lib/codeclib.h
@@ -24,8 +24,6 @@
 #include "system.h"
 #include <sys/types.h>
 
-#define MALLOC_BUFSIZE (512*1024)
-
 extern struct codec_api *ci;
 extern long mem_ptr;
 extern long bufsize;
diff --git a/apps/playback.c b/apps/playback.c
index f41cca6..bfad1a2 100644
--- a/apps/playback.c
+++ b/apps/playback.c
@@ -166,10 +166,8 @@
 
 /* As defined in plugins/lib/xxx2wav.h */
 #if MEM > 1
-#define MALLOC_BUFSIZE (512*1024)
 #define GUARD_BUFSIZE  (32*1024)
 #else
-#define MALLOC_BUFSIZE (100*1024)
 #define GUARD_BUFSIZE  (8*1024)
 #endif
 
@@ -924,10 +922,12 @@
     return true;
 } /* codec_pcmbuf_insert_callback */
 
-static void* codec_get_memory_callback(size_t *size)
+static void* codec_get_buffer(size_t *size)
 {
-    *size = MALLOC_BUFSIZE;
-    return malloc_buf;
+    if (codec_size >= CODEC_SIZE)
+        return NULL;
+    *size = CODEC_SIZE - codec_size;
+    return &codecbuf[codec_size];
 }
 
 /* Between the codec and PCM track change, we need to keep updating the
@@ -2297,7 +2297,7 @@
 
 /*
  * Layout audio buffer as follows - iram buffer depends on target:
- * [|SWAP:iram][|TALK]|MALLOC|FILE|GUARD|PCM|[SWAP:dram[|iram]|]
+ * [|SWAP:iram][|TALK]|FILE|GUARD|PCM|[SWAP:dram[|iram]|]
  */
 static void audio_reset_buffer(void)
 {
@@ -2313,7 +2313,7 @@
     /* Align the malloc buf to line size. Especially important to cf
        targets that do line reads/writes. */
     malloc_buf = (unsigned char *)(((uintptr_t)malloc_buf + 15) & ~15);
-    filebuf    = malloc_buf + MALLOC_BUFSIZE; /* filebuf line align implied */
+    filebuf    = malloc_buf; /* filebuf line align implied */
     filebuflen = audiobufend - filebuf;
 
     filebuflen &= ~15;
@@ -2338,7 +2338,6 @@
         size_t pcmbufsize;
         const unsigned char *pcmbuf = pcmbuf_get_meminfo(&pcmbufsize);
         logf("mabuf:  %08X", (unsigned)malloc_buf);
-        logf("mabufe: %08X", (unsigned)(malloc_buf + MALLOC_BUFSIZE));
         logf("fbuf:   %08X", (unsigned)filebuf);
         logf("fbufe:  %08X", (unsigned)(filebuf + filebuflen));
         logf("gbuf:   %08X", (unsigned)(filebuf + filebuflen));
@@ -2513,7 +2512,7 @@
      /* Initialize codec api. */
     ci.read_filebuf        = codec_filebuf_callback;
     ci.pcmbuf_insert       = codec_pcmbuf_insert_callback;
-    ci.get_codec_memory    = codec_get_memory_callback;
+    ci.codec_get_buffer    = codec_get_buffer;
     ci.request_buffer      = codec_request_buffer_callback;
     ci.advance_buffer      = codec_advance_buffer_callback;
     ci.advance_buffer_loc  = codec_advance_buffer_loc_callback;
diff --git a/firmware/export/config-c200.h b/firmware/export/config-c200.h
index bb8adae..9a9198e 100644
--- a/firmware/export/config-c200.h
+++ b/firmware/export/config-c200.h
@@ -96,7 +96,7 @@
 #define HAVE_FAT16SUPPORT
 
 /* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x80000
+#define CODEC_SIZE 0x100000
 
 /* The number of bytes reserved for loadable plugins */
 #define PLUGIN_BUFFER_SIZE 0x80000
diff --git a/firmware/export/config-clip.h b/firmware/export/config-clip.h
index b6ffcce..0685e45 100644
--- a/firmware/export/config-clip.h
+++ b/firmware/export/config-clip.h
@@ -83,7 +83,7 @@
 
 /* The number of bytes reserved for loadable codecs */
 #define CODEC_SIZE 0
-//#define CODEC_SIZE 0x80000
+//#define CODEC_SIZE 0x100000
 
 /* The number of bytes reserved for loadable plugins */
 //#define PLUGIN_BUFFER_SIZE 0x80000
diff --git a/firmware/export/config-cowond2.h b/firmware/export/config-cowond2.h
index 1bcb406..d136cae 100644
--- a/firmware/export/config-cowond2.h
+++ b/firmware/export/config-cowond2.h
@@ -78,7 +78,7 @@
 #define ICODE_ATTR_TREMOR_NOT_MDCT
 
 /* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x80000
+#define CODEC_SIZE 0x100000
 
 /* The number of bytes reserved for loadable plugins */
 #define PLUGIN_BUFFER_SIZE 0x80000
diff --git a/firmware/export/config-creativezv.h b/firmware/export/config-creativezv.h
index 2225e8c..e9cc268 100644
--- a/firmware/export/config-creativezv.h
+++ b/firmware/export/config-creativezv.h
@@ -104,7 +104,7 @@
 //TODO: enable this back
 
 /* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x80000
+#define CODEC_SIZE 0x100000
 
 /* The number of bytes reserved for loadable plugins */
 #define PLUGIN_BUFFER_SIZE 0x100000
diff --git a/firmware/export/config-creativezvm.h b/firmware/export/config-creativezvm.h
index 02ec490..ec21500 100644
--- a/firmware/export/config-creativezvm.h
+++ b/firmware/export/config-creativezvm.h
@@ -104,7 +104,7 @@
 //TODO: enable this back
 
 /* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x80000
+#define CODEC_SIZE 0x100000
 
 /* The number of bytes reserved for loadable plugins */
 #define PLUGIN_BUFFER_SIZE 0x100000
diff --git a/firmware/export/config-creativezvm60gb.h b/firmware/export/config-creativezvm60gb.h
index f319dea..d1e1d80 100644
--- a/firmware/export/config-creativezvm60gb.h
+++ b/firmware/export/config-creativezvm60gb.h
@@ -104,7 +104,7 @@
 //TODO: enable this back
 
 /* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x80000
+#define CODEC_SIZE 0x100000
 
 /* The number of bytes reserved for loadable plugins */
 #define PLUGIN_BUFFER_SIZE 0x100000
diff --git a/firmware/export/config-e200.h b/firmware/export/config-e200.h
index f187c97..745aa71 100644
--- a/firmware/export/config-e200.h
+++ b/firmware/export/config-e200.h
@@ -86,7 +86,7 @@
 #define HAVE_FAT16SUPPORT
 
 /* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x80000
+#define CODEC_SIZE 0x100000
 
 /* The number of bytes reserved for loadable plugins */
 #define PLUGIN_BUFFER_SIZE 0x80000
diff --git a/firmware/export/config-gigabeat-s.h b/firmware/export/config-gigabeat-s.h
index 92813c6..7f36bce 100644
--- a/firmware/export/config-gigabeat-s.h
+++ b/firmware/export/config-gigabeat-s.h
@@ -64,7 +64,7 @@
 #define HAVE_SW_POWEROFF
 
 /* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x80000
+#define CODEC_SIZE 0x100000
 
 /* The number of bytes reserved for loadable plugins */
 #define PLUGIN_BUFFER_SIZE 0x80000
diff --git a/firmware/export/config-gigabeat.h b/firmware/export/config-gigabeat.h
index c2ac7a9..f4910bf 100644
--- a/firmware/export/config-gigabeat.h
+++ b/firmware/export/config-gigabeat.h
@@ -84,7 +84,7 @@
 #define HAVE_SW_POWEROFF
 
 /* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x80000
+#define CODEC_SIZE 0x100000
 
 /* The number of bytes reserved for loadable plugins */
 #define PLUGIN_BUFFER_SIZE 0x80000
diff --git a/firmware/export/config-h10.h b/firmware/export/config-h10.h
index 6f66555..8504ffd 100644
--- a/firmware/export/config-h10.h
+++ b/firmware/export/config-h10.h
@@ -87,7 +87,7 @@
 #define HAVE_SW_POWEROFF
 
 /* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x80000
+#define CODEC_SIZE 0x100000
 
 /* The number of bytes reserved for loadable plugins */
 #define PLUGIN_BUFFER_SIZE 0x80000
diff --git a/firmware/export/config-h100.h b/firmware/export/config-h100.h
index dcb0e6d..641709f 100644
--- a/firmware/export/config-h100.h
+++ b/firmware/export/config-h100.h
@@ -80,7 +80,7 @@
 #define HAVE_SW_POWEROFF
 
 /* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x80000
+#define CODEC_SIZE 0x100000
 
 /* The number of bytes reserved for loadable plugins */
 #define PLUGIN_BUFFER_SIZE 0x80000
diff --git a/firmware/export/config-h10_5gb.h b/firmware/export/config-h10_5gb.h
index 29f0e55..fa1e372 100644
--- a/firmware/export/config-h10_5gb.h
+++ b/firmware/export/config-h10_5gb.h
@@ -66,7 +66,7 @@
 #define HAVE_SW_POWEROFF
 
 /* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x80000
+#define CODEC_SIZE 0x100000
 
 /* The number of bytes reserved for loadable plugins */
 #define PLUGIN_BUFFER_SIZE 0x80000
diff --git a/firmware/export/config-h120.h b/firmware/export/config-h120.h
index c75734f..6177347 100644
--- a/firmware/export/config-h120.h
+++ b/firmware/export/config-h120.h
@@ -75,7 +75,7 @@
 #define HAVE_SW_POWEROFF
 
 /* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x80000
+#define CODEC_SIZE 0x100000
 
 /* The number of bytes reserved for loadable plugins */
 #define PLUGIN_BUFFER_SIZE 0x80000
diff --git a/firmware/export/config-h300.h b/firmware/export/config-h300.h
index 134e90c..0b30574 100644
--- a/firmware/export/config-h300.h
+++ b/firmware/export/config-h300.h
@@ -73,7 +73,7 @@
 #define HAVE_SW_POWEROFF
 
 /* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x80000
+#define CODEC_SIZE 0x100000
 
 /* The number of bytes reserved for loadable plugins */
 #define PLUGIN_BUFFER_SIZE 0x80000
diff --git a/firmware/export/config-hdd1630.h b/firmware/export/config-hdd1630.h
index 5a31199..810902e 100755
--- a/firmware/export/config-hdd1630.h
+++ b/firmware/export/config-hdd1630.h
@@ -84,7 +84,7 @@
 /* #define HAVE_SW_POWEROFF */
 
 /* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x80000
+#define CODEC_SIZE 0x100000
 
 /* The number of bytes reserved for loadable plugins */
 #define PLUGIN_BUFFER_SIZE 0x80000
diff --git a/firmware/export/config-iaudio7.h b/firmware/export/config-iaudio7.h
index 3d6f239..8934470 100644
--- a/firmware/export/config-iaudio7.h
+++ b/firmware/export/config-iaudio7.h
@@ -89,7 +89,7 @@
 #define ICODE_ATTR_TREMOR_NOT_MDCT
 
 /* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x80000
+#define CODEC_SIZE 0x100000
 
 /* The number of bytes reserved for loadable plugins */
 #define PLUGIN_BUFFER_SIZE 0x80000
diff --git a/firmware/export/config-iaudiom3.h b/firmware/export/config-iaudiom3.h
index 429e922..8ebd5cb 100644
--- a/firmware/export/config-iaudiom3.h
+++ b/firmware/export/config-iaudiom3.h
@@ -79,7 +79,7 @@
 #define HAVE_SW_POWEROFF
 
 /* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x80000
+#define CODEC_SIZE 0x100000
 
 /* The number of bytes reserved for loadable plugins */
 #define PLUGIN_BUFFER_SIZE 0x80000
diff --git a/firmware/export/config-iaudiom5.h b/firmware/export/config-iaudiom5.h
index eb3b121..027ffb6 100644
--- a/firmware/export/config-iaudiom5.h
+++ b/firmware/export/config-iaudiom5.h
@@ -86,7 +86,7 @@
 #define HAVE_SW_POWEROFF
 
 /* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x80000
+#define CODEC_SIZE 0x100000
 
 /* The number of bytes reserved for loadable plugins */
 #define PLUGIN_BUFFER_SIZE 0x80000
diff --git a/firmware/export/config-iaudiox5.h b/firmware/export/config-iaudiox5.h
index be21006..5ea3dcd 100644
--- a/firmware/export/config-iaudiox5.h
+++ b/firmware/export/config-iaudiox5.h
@@ -99,7 +99,7 @@
 #define HAVE_SW_POWEROFF
 
 /* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x80000
+#define CODEC_SIZE 0x100000
 
 /* The number of bytes reserved for loadable plugins */
 #define PLUGIN_BUFFER_SIZE 0x80000
diff --git a/firmware/export/config-ifp7xx.h b/firmware/export/config-ifp7xx.h
index bea4374..6e6f9f4 100644
--- a/firmware/export/config-ifp7xx.h
+++ b/firmware/export/config-ifp7xx.h
@@ -42,7 +42,7 @@
 #define HAVE_SW_POWEROFF
 
 /* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x20000
+#define CODEC_SIZE 0x38000
 
 /* The number of bytes reserved for loadable plugins */
 #define PLUGIN_BUFFER_SIZE 0x10000
diff --git a/firmware/export/config-ipod1g2g.h b/firmware/export/config-ipod1g2g.h
index 5727e46..ae810b1 100644
--- a/firmware/export/config-ipod1g2g.h
+++ b/firmware/export/config-ipod1g2g.h
@@ -70,7 +70,7 @@
 #define HAVE_SW_POWEROFF
 
 /* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x80000
+#define CODEC_SIZE 0x100000
 
 /* The number of bytes reserved for loadable plugins */
 #define PLUGIN_BUFFER_SIZE 0x80000
diff --git a/firmware/export/config-ipod3g.h b/firmware/export/config-ipod3g.h
index 285043a..3ca95c3 100644
--- a/firmware/export/config-ipod3g.h
+++ b/firmware/export/config-ipod3g.h
@@ -80,7 +80,7 @@
 #define HAVE_SW_POWEROFF
 
 /* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x80000
+#define CODEC_SIZE 0x100000
 
 /* The number of bytes reserved for loadable plugins */
 #define PLUGIN_BUFFER_SIZE 0x80000
diff --git a/firmware/export/config-ipod4g.h b/firmware/export/config-ipod4g.h
index dddda21..4f0045f 100644
--- a/firmware/export/config-ipod4g.h
+++ b/firmware/export/config-ipod4g.h
@@ -80,7 +80,7 @@
 #define HAVE_SW_POWEROFF
 
 /* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x80000
+#define CODEC_SIZE 0x100000
 
 /* The number of bytes reserved for loadable plugins */
 #define PLUGIN_BUFFER_SIZE 0x80000
diff --git a/firmware/export/config-ipodcolor.h b/firmware/export/config-ipodcolor.h
index f4db7d8..d23a03a 100644
--- a/firmware/export/config-ipodcolor.h
+++ b/firmware/export/config-ipodcolor.h
@@ -67,7 +67,7 @@
 #define HAVE_SW_POWEROFF
 
 /* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x80000
+#define CODEC_SIZE 0x100000
 
 /* The number of bytes reserved for loadable plugins */
 #define PLUGIN_BUFFER_SIZE 0x80000
diff --git a/firmware/export/config-ipodmini.h b/firmware/export/config-ipodmini.h
index 37fb083..8477e49 100644
--- a/firmware/export/config-ipodmini.h
+++ b/firmware/export/config-ipodmini.h
@@ -79,7 +79,7 @@
 #define HAVE_SW_POWEROFF
 
 /* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x80000
+#define CODEC_SIZE 0x100000
 
 /* The number of bytes reserved for loadable plugins */
 #define PLUGIN_BUFFER_SIZE 0x80000
diff --git a/firmware/export/config-ipodmini2g.h b/firmware/export/config-ipodmini2g.h
index a96e71d..5e7bdb0 100644
--- a/firmware/export/config-ipodmini2g.h
+++ b/firmware/export/config-ipodmini2g.h
@@ -79,7 +79,7 @@
 #define HAVE_SW_POWEROFF
 
 /* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x80000
+#define CODEC_SIZE 0x100000
 
 /* The number of bytes reserved for loadable plugins */
 #define PLUGIN_BUFFER_SIZE 0x80000
diff --git a/firmware/export/config-ipodnano.h b/firmware/export/config-ipodnano.h
index bfdf7fd..0750d55 100644
--- a/firmware/export/config-ipodnano.h
+++ b/firmware/export/config-ipodnano.h
@@ -67,7 +67,7 @@
 #define HAVE_SW_POWEROFF
 
 /* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x80000
+#define CODEC_SIZE 0x100000
 
 /* The number of bytes reserved for loadable plugins */
 #define PLUGIN_BUFFER_SIZE 0x80000
diff --git a/firmware/export/config-ipodvideo.h b/firmware/export/config-ipodvideo.h
index 9b322f2..c7a248e 100644
--- a/firmware/export/config-ipodvideo.h
+++ b/firmware/export/config-ipodvideo.h
@@ -67,7 +67,7 @@
 #define HAVE_SW_POWEROFF
 
 /* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x80000
+#define CODEC_SIZE 0x100000
 
 /* The number of bytes reserved for loadable plugins */
 #define PLUGIN_BUFFER_SIZE 0x80000
diff --git a/firmware/export/config-logikdax.h b/firmware/export/config-logikdax.h
index 0a29251..f1787b1 100644
--- a/firmware/export/config-logikdax.h
+++ b/firmware/export/config-logikdax.h
@@ -57,7 +57,7 @@
 #define HAVE_SW_POWEROFF
 
 /* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x20000
+#define CODEC_SIZE 0x38000
 
 /* The number of bytes reserved for loadable plugins */
 #define PLUGIN_BUFFER_SIZE 0x10000
diff --git a/firmware/export/config-m200.h b/firmware/export/config-m200.h
index a362b7e..2733ad5 100644
--- a/firmware/export/config-m200.h
+++ b/firmware/export/config-m200.h
@@ -58,7 +58,7 @@
 #define HAVE_SW_POWEROFF
 
 /* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x20000
+#define CODEC_SIZE 0x38000
 
 /* The number of bytes reserved for loadable plugins */
 #define PLUGIN_BUFFER_SIZE 0x10000
diff --git a/firmware/export/config-meizu-m3.h b/firmware/export/config-meizu-m3.h
index 763fa49..52bbaf2 100644
--- a/firmware/export/config-meizu-m3.h
+++ b/firmware/export/config-meizu-m3.h
@@ -86,7 +86,7 @@
 #define HAVE_SW_POWEROFF
 
 /* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x80000
+#define CODEC_SIZE 0x100000
 
 /* The number of bytes reserved for loadable plugins */
 #define PLUGIN_BUFFER_SIZE 0x80000
diff --git a/firmware/export/config-meizu-m6sl.h b/firmware/export/config-meizu-m6sl.h
index b271950..2b81a8b 100644
--- a/firmware/export/config-meizu-m6sl.h
+++ b/firmware/export/config-meizu-m6sl.h
@@ -86,7 +86,7 @@
 #define HAVE_SW_POWEROFF
 
 /* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x80000
+#define CODEC_SIZE 0x100000
 
 /* The number of bytes reserved for loadable plugins */
 #define PLUGIN_BUFFER_SIZE 0x80000
diff --git a/firmware/export/config-meizu-m6sp.h b/firmware/export/config-meizu-m6sp.h
index a78d239..71b78a5 100644
--- a/firmware/export/config-meizu-m6sp.h
+++ b/firmware/export/config-meizu-m6sp.h
@@ -86,7 +86,7 @@
 #define HAVE_SW_POWEROFF
 
 /* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x80000
+#define CODEC_SIZE 0x100000
 
 /* The number of bytes reserved for loadable plugins */
 #define PLUGIN_BUFFER_SIZE 0x80000
diff --git a/firmware/export/config-mrobe100.h b/firmware/export/config-mrobe100.h
index 0301174..99e7757 100644
--- a/firmware/export/config-mrobe100.h
+++ b/firmware/export/config-mrobe100.h
@@ -51,7 +51,7 @@
 #define HAVE_SW_POWEROFF
 
 /* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x80000
+#define CODEC_SIZE 0x100000
 
 /* The number of bytes reserved for loadable plugins */
 #define PLUGIN_BUFFER_SIZE 0x80000
diff --git a/firmware/export/config-mrobe500.h b/firmware/export/config-mrobe500.h
index 3eab120..8e20c94 100644
--- a/firmware/export/config-mrobe500.h
+++ b/firmware/export/config-mrobe500.h
@@ -115,7 +115,7 @@
 #define HAVE_SW_POWEROFF
 
 /* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x80000
+#define CODEC_SIZE 0x100000
 
 /* The number of bytes reserved for loadable plugins */
 #define PLUGIN_BUFFER_SIZE 0x100000
diff --git a/firmware/export/config-ondavx747.h b/firmware/export/config-ondavx747.h
index 49047d6..12deb9c 100644
--- a/firmware/export/config-ondavx747.h
+++ b/firmware/export/config-ondavx747.h
@@ -91,7 +91,7 @@
 //#define HAVE_SW_POWEROFF
 
 /* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x80000
+#define CODEC_SIZE 0x100000
 
 /* The number of bytes reserved for loadable plugins */
 #define PLUGIN_BUFFER_SIZE 0x100000
diff --git a/firmware/export/config-ondavx767.h b/firmware/export/config-ondavx767.h
index 55a6791..9c2d237 100644
--- a/firmware/export/config-ondavx767.h
+++ b/firmware/export/config-ondavx767.h
@@ -89,7 +89,7 @@
 //#define HAVE_SW_POWEROFF
 
 /* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x80000
+#define CODEC_SIZE 0x100000
 
 /* The number of bytes reserved for loadable plugins */
 #define PLUGIN_BUFFER_SIZE 0x100000
diff --git a/firmware/export/config-sa9200.h b/firmware/export/config-sa9200.h
index 4d9c28a..433e28d 100755
--- a/firmware/export/config-sa9200.h
+++ b/firmware/export/config-sa9200.h
@@ -74,7 +74,7 @@
 #define HAVE_FAT16SUPPORT
 
 /* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x80000
+#define CODEC_SIZE 0x100000
 
 /* The number of bytes reserved for loadable plugins */
 #define PLUGIN_BUFFER_SIZE 0x80000
diff --git a/firmware/export/config-tpj1022.h b/firmware/export/config-tpj1022.h
index 6f23b86..1b49e0e 100644
--- a/firmware/export/config-tpj1022.h
+++ b/firmware/export/config-tpj1022.h
@@ -57,7 +57,7 @@
 #define HAVE_SW_POWEROFF
 
 /* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x80000
+#define CODEC_SIZE 0x100000
 
 /* The number of bytes reserved for loadable plugins */
 #define PLUGIN_BUFFER_SIZE 0x80000