From de1529c4eb711a331dfa156efdb799149eb52068 Mon Sep 17 00:00:00 2001 From: Andree Buschmann Date: Sun, 22 May 2011 21:00:32 +0000 Subject: Save a large static buffer in sid codec. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29915 a1c6a512-1295-4272-9138-f99709370657 --- apps/codecs/sid.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/apps/codecs/sid.c b/apps/codecs/sid.c index 46c4a5408f..291b9ca6f3 100644 --- a/apps/codecs/sid.c +++ b/apps/codecs/sid.c @@ -66,6 +66,7 @@ CODEC_HEADER #define CHUNK_SIZE (1024*2) +#define SID_BUFFER_SIZE 0x10000 /* This codec supports SID Files: * @@ -73,9 +74,6 @@ CODEC_HEADER static int32_t samples[CHUNK_SIZE] IBSS_ATTR; /* The sample buffer */ -/* Static buffer for the plain SID-File */ -static unsigned char sidfile[0x10000]; - void sidPoke(int reg, unsigned char val) ICODE_ATTR; #define FLAG_N 128 @@ -1225,6 +1223,7 @@ enum codec_status codec_run(void) unsigned int filesize; unsigned short load_addr, init_addr, play_addr; unsigned char subSongsMax, subSong, song_speed; + unsigned char *sidfile = NULL; intptr_t param; if (codec_init()) { @@ -1236,7 +1235,7 @@ enum codec_status codec_run(void) /* Load SID file the read_filebuf callback will return the full requested * size if at all possible, so there is no need to loop */ ci->seek_buffer(0); - filesize = ci->read_filebuf(sidfile, sizeof(sidfile)); + sidfile = ci->request_buffer(&filesize, SID_BUFFER_SIZE); if (filesize == 0) { return CODEC_ERROR; -- cgit v1.2.3