summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Bavin <pondlife@pondlife.me>2010-02-24 17:20:39 +0000
committerSteve Bavin <pondlife@pondlife.me>2010-02-24 17:20:39 +0000
commitc6e69cd886eac13fcc6c14df727757ad2ba464d5 (patch)
tree1c2401d8d718b9f830b9d4cb89085867b1298046
parent9c0847fc279e7211cc1cdbce82435a2c823a41b3 (diff)
downloadrockbox-c6e69cd886eac13fcc6c14df727757ad2ba464d5.tar.gz
rockbox-c6e69cd886eac13fcc6c14df727757ad2ba464d5.zip
Put the SMAF metadata buffer on the stack to save some memory. Only tested with one SMAF file, so please check if you have more.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24886 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/metadata/smaf.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/apps/metadata/smaf.c b/apps/metadata/smaf.c
index f7d825c96a..586802b7b5 100644
--- a/apps/metadata/smaf.c
+++ b/apps/metadata/smaf.c
@@ -48,8 +48,6 @@ static int support_codepages[7] = {
48#define TAG_ARTIST (('A'<<8)|'N') 48#define TAG_ARTIST (('A'<<8)|'N')
49#define TAG_COMPOSER (('S'<<8)|'W') 49#define TAG_COMPOSER (('S'<<8)|'W')
50 50
51static unsigned char smafbuf[1024];
52
53static bool read_datachunk(unsigned char *src, int size, unsigned short tag, 51static bool read_datachunk(unsigned char *src, int size, unsigned short tag,
54 int codepage, unsigned char *dst) 52 int codepage, unsigned char *dst)
55{ 53{
@@ -235,9 +233,11 @@ static bool get_smaf_metadata_score_track(struct mp3entry *id3,
235 233
236bool get_smaf_metadata(int fd, struct mp3entry* id3) 234bool get_smaf_metadata(int fd, struct mp3entry* id3)
237{ 235{
236 unsigned char smafbuf[1024];
237
238 /* Use the trackname part of the id3 structure as a temporary buffer */ 238 /* Use the trackname part of the id3 structure as a temporary buffer */
239 unsigned char* buf = (unsigned char *)id3->path; 239 unsigned char* buf = (unsigned char *)id3->path;
240 unsigned char *endbuf = smafbuf + 1024; 240 unsigned char *endbuf = smafbuf + sizeof(smafbuf);
241 int i; 241 int i;
242 int contents_size; 242 int contents_size;
243 int codepage = ISO_8859_1; 243 int codepage = ISO_8859_1;
@@ -347,8 +347,8 @@ bool get_smaf_metadata(int fd, struct mp3entry* id3)
347 if (contents_size > i) 347 if (contents_size > i)
348 lseek(fd, contents_size - i, SEEK_CUR); 348 lseek(fd, contents_size - i, SEEK_CUR);
349 349
350 /* assume the SMAF pcm data position is less than 1024 bytes */ 350 /* assume the SMAF pcm data position is near the start */
351 if (read(fd, smafbuf, 1024) < 1024) 351 if (read(fd, smafbuf, sizeof(smafbuf)) < (ssize_t)sizeof(smafbuf))
352 return false; 352 return false;
353 353
354 buf = smafbuf; 354 buf = smafbuf;