summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNils Wallménius <nils@rockbox.org>2008-10-19 12:35:53 +0000
committerNils Wallménius <nils@rockbox.org>2008-10-19 12:35:53 +0000
commit2f50cd58b9fb7cd75448622b5ac222cdcad6bc6f (patch)
tree880a25472bfa6ce2fcda13a334c17607aa1ad419
parent01177055425776fadbdd6cf167111105b118754a (diff)
downloadrockbox-2f50cd58b9fb7cd75448622b5ac222cdcad6bc6f.tar.gz
rockbox-2f50cd58b9fb7cd75448622b5ac222cdcad6bc6f.zip
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
-rw-r--r--apps/codecs.c13
-rw-r--r--apps/codecs.h9
-rw-r--r--apps/codecs/Tremor/oggmalloc.c2
-rw-r--r--apps/codecs/lib/codeclib.c2
-rw-r--r--apps/codecs/lib/codeclib.h2
-rw-r--r--apps/playback.c17
-rw-r--r--firmware/export/config-c200.h2
-rw-r--r--firmware/export/config-clip.h2
-rw-r--r--firmware/export/config-cowond2.h2
-rw-r--r--firmware/export/config-creativezv.h2
-rw-r--r--firmware/export/config-creativezvm.h2
-rw-r--r--firmware/export/config-creativezvm60gb.h2
-rw-r--r--firmware/export/config-e200.h2
-rw-r--r--firmware/export/config-gigabeat-s.h2
-rw-r--r--firmware/export/config-gigabeat.h2
-rw-r--r--firmware/export/config-h10.h2
-rw-r--r--firmware/export/config-h100.h2
-rw-r--r--firmware/export/config-h10_5gb.h2
-rw-r--r--firmware/export/config-h120.h2
-rw-r--r--firmware/export/config-h300.h2
-rwxr-xr-xfirmware/export/config-hdd1630.h2
-rw-r--r--firmware/export/config-iaudio7.h2
-rw-r--r--firmware/export/config-iaudiom3.h2
-rw-r--r--firmware/export/config-iaudiom5.h2
-rw-r--r--firmware/export/config-iaudiox5.h2
-rw-r--r--firmware/export/config-ifp7xx.h2
-rw-r--r--firmware/export/config-ipod1g2g.h2
-rw-r--r--firmware/export/config-ipod3g.h2
-rw-r--r--firmware/export/config-ipod4g.h2
-rw-r--r--firmware/export/config-ipodcolor.h2
-rw-r--r--firmware/export/config-ipodmini.h2
-rw-r--r--firmware/export/config-ipodmini2g.h2
-rw-r--r--firmware/export/config-ipodnano.h2
-rw-r--r--firmware/export/config-ipodvideo.h2
-rw-r--r--firmware/export/config-logikdax.h2
-rw-r--r--firmware/export/config-m200.h2
-rw-r--r--firmware/export/config-meizu-m3.h2
-rw-r--r--firmware/export/config-meizu-m6sl.h2
-rw-r--r--firmware/export/config-meizu-m6sp.h2
-rw-r--r--firmware/export/config-mrobe100.h2
-rw-r--r--firmware/export/config-mrobe500.h2
-rw-r--r--firmware/export/config-ondavx747.h2
-rw-r--r--firmware/export/config-ondavx767.h2
-rwxr-xr-xfirmware/export/config-sa9200.h2
-rw-r--r--firmware/export/config-tpj1022.h2
45 files changed, 66 insertions, 57 deletions
diff --git a/apps/codecs.c b/apps/codecs.c
index 417b546391..8e9e55a5d4 100644
--- a/apps/codecs.c
+++ b/apps/codecs.c
@@ -66,6 +66,8 @@ void sim_codec_close(void *pd);
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 @@ struct codec_api ci = {
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 @@ static int codec_load_ram(int size, struct codec_api *api)
logf("codec header error");
return CODEC_ERROR;
}
+
+ codec_size = hdr->end_addr - codecbuf;
+
#else /* SIMULATOR */
void *pd;
@@ -211,6 +216,9 @@ static int codec_load_ram(int size, struct codec_api *api)
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 @@ static int codec_load_ram(int size, struct codec_api *api)
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 becb73c8b7..6d8c1016a8 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 codec_api {
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 @@ struct codec_header {
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 d7e903b156..b11eaa54f5 100644
--- a/apps/codecs/Tremor/oggmalloc.c
+++ b/apps/codecs/Tremor/oggmalloc.c
@@ -5,7 +5,7 @@ static size_t bufsize, tmp_ptr, mem_ptr;
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 e537995db9..6e11eb1aa1 100644
--- a/apps/codecs/lib/codeclib.c
+++ b/apps/codecs/lib/codeclib.c
@@ -36,7 +36,7 @@ unsigned char* filebuf; // The rest of the MP3 buffer
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 87cc926c6b..744accb8aa 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 f41cca64a2..bfad1a280c 100644
--- a/apps/playback.c
+++ b/apps/playback.c
@@ -166,10 +166,8 @@ enum filling_state {
/* 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 @@ static bool codec_pcmbuf_insert_callback(
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 @@ static void audio_finalise_track_change(void)
/*
* 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 @@ static void audio_reset_buffer(void)
/* 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 @@ static void audio_reset_buffer(void)
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 @@ void audio_init(void)
/* 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 bb8adae505..9a9198ee05 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 b6ffccecab..0685e45fd9 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 1bcb406837..d136caefb2 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 2225e8c45e..e9cc2685b6 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 02ec490284..ec21500296 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 f319dead47..d1e1d80889 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 f187c973f5..745aa71735 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 92813c6b00..7f36bce7dd 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 c2ac7a9483..f4910bfcb0 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 6f66555d7d..8504ffd25a 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 dcb0e6d9f0..641709f639 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 29f0e55b6b..fa1e37229a 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 c75734f7b7..6177347664 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 134e90cd17..0b305747cf 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 5a311993fe..810902e487 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 3d6f239085..8934470537 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 429e922529..8ebd5cb8b6 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 eb3b1216eb..027ffb61e5 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 be21006295..5ea3dcd73c 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 bea4374fc1..6e6f9f4097 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 5727e46616..ae810b14cb 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 285043a77f..3ca95c375c 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 dddda21e07..4f0045fee8 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 f4db7d8b98..d23a03a00b 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 37fb083af4..8477e497b4 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 a96e71dbc7..5e7bdb0d09 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 bfdf7fdc30..0750d55557 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 9b322f2ffd..c7a248e532 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 0a2925128a..f1787b1a0e 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 a362b7e1a4..2733ad577d 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 763fa49fbf..52bbaf2cfa 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 b2719501f7..2b81a8b3ae 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 a78d239c2d..71b78a563b 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 03011745eb..99e7757af8 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 3eab1209f4..8e20c9478c 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 49047d6a3c..12deb9cf71 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 55a6791cbc..9c2d237b01 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 4d9c28af1e..433e28db82 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 6f23b86f06..1b49e0ebb9 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