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
This commit is contained in:
Steve Bavin 2010-02-24 17:20:39 +00:00
parent 9c0847fc27
commit c6e69cd886

View file

@ -48,8 +48,6 @@ static int support_codepages[7] = {
#define TAG_ARTIST (('A'<<8)|'N') #define TAG_ARTIST (('A'<<8)|'N')
#define TAG_COMPOSER (('S'<<8)|'W') #define TAG_COMPOSER (('S'<<8)|'W')
static unsigned char smafbuf[1024];
static bool read_datachunk(unsigned char *src, int size, unsigned short tag, static bool read_datachunk(unsigned char *src, int size, unsigned short tag,
int codepage, unsigned char *dst) int codepage, unsigned char *dst)
{ {
@ -235,9 +233,11 @@ static bool get_smaf_metadata_score_track(struct mp3entry *id3,
bool get_smaf_metadata(int fd, struct mp3entry* id3) bool get_smaf_metadata(int fd, struct mp3entry* id3)
{ {
unsigned char smafbuf[1024];
/* Use the trackname part of the id3 structure as a temporary buffer */ /* Use the trackname part of the id3 structure as a temporary buffer */
unsigned char* buf = (unsigned char *)id3->path; unsigned char* buf = (unsigned char *)id3->path;
unsigned char *endbuf = smafbuf + 1024; unsigned char *endbuf = smafbuf + sizeof(smafbuf);
int i; int i;
int contents_size; int contents_size;
int codepage = ISO_8859_1; int codepage = ISO_8859_1;
@ -347,8 +347,8 @@ bool get_smaf_metadata(int fd, struct mp3entry* id3)
if (contents_size > i) if (contents_size > i)
lseek(fd, contents_size - i, SEEK_CUR); lseek(fd, contents_size - i, SEEK_CUR);
/* assume the SMAF pcm data position is less than 1024 bytes */ /* assume the SMAF pcm data position is near the start */
if (read(fd, smafbuf, 1024) < 1024) if (read(fd, smafbuf, sizeof(smafbuf)) < (ssize_t)sizeof(smafbuf))
return false; return false;
buf = smafbuf; buf = smafbuf;