diff options
| author | Björn Stenberg <bjorn@haxx.se> | 2002-08-14 10:15:27 +0000 |
|---|---|---|
| committer | Björn Stenberg <bjorn@haxx.se> | 2002-08-14 10:15:27 +0000 |
| commit | 66f9bccd4746e222a5c1bea7f1fe57d4f2124f5a (patch) | |
| tree | 3bac192bea9a81d4143d01cf952e8e9198b3b456 | |
| parent | 41977da3d5169c44f996db819310b1a48f704054 (diff) | |
| download | rockbox-66f9bccd4746e222a5c1bea7f1fe57d4f2124f5a.zip rockbox-66f9bccd4746e222a5c1bea7f1fe57d4f2124f5a.tar.gz rockbox-66f9bccd4746e222a5c1bea7f1fe57d4f2124f5a.tar.bz2 rockbox-66f9bccd4746e222a5c1bea7f1fe57d4f2124f5a.tar.xz | |
Skip past id3v2 tag when loading mp3 data
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1729 a1c6a512-1295-4272-9138-f99709370657
| -rw-r--r-- | firmware/id3.c | 11 | ||||
| -rw-r--r-- | firmware/mpeg.c | 8 |
2 files changed, 10 insertions, 9 deletions
diff --git a/firmware/id3.c b/firmware/id3.c index 021b817..743ff74 100644 --- a/firmware/id3.c +++ b/firmware/id3.c @@ -44,9 +44,6 @@ ((b3 & 0x7F) << (1*7)) | \ ((b4 & 0x7F) << (0*7))) -#define HASID3V2(entry) entry->id3v2len > 0 -#define HASID3V1(entry) entry->id3v1len > 0 - /* Table of bitrates for MP3 files, all values in kilo. * Indexed by version, layer and value of bit 15-12 in header. */ @@ -596,16 +593,12 @@ bool mp3info(struct mp3entry *entry, char *filename) entry->id3v2len = getid3v2len(fd); entry->tracknum = 0; - /* Ignore the tag if it is too big */ - if(entry->id3v2len > sizeof(entry->id3v2buf)) - entry->id3v2len = 0; - - if(HASID3V2(entry)) + if ( entry->id3v2len && entry->id3v2len <= sizeof( entry->id3v2buf ) ) setid3v2title(fd, entry); entry->length = getsonglength(fd, entry); entry->id3v1len = getid3v1len(fd); - if(HASID3V1(entry) && !entry->title) + if(entry->id3v1len && !entry->title) setid3v1title(fd, entry); close(fd); diff --git a/firmware/mpeg.c b/firmware/mpeg.c index 1a42ee9..fed755b 100644 --- a/firmware/mpeg.c +++ b/firmware/mpeg.c @@ -624,6 +624,10 @@ static int new_file(int steps) else { add_track_to_tag_list(trackname); + /* skip past id3v2 tag (to an even byte) */ + lseek(mpeg_file, + id3tags[tag_read_idx]->id3.id3v2len & ~1, + SEEK_SET); } } while ( mpeg_file < 0 ); @@ -698,6 +702,10 @@ static void mpeg_thread(void) } add_track_to_tag_list((char *)ev.data); + /* skip past id3v2 tag (to an even byte) */ + lseek(mpeg_file, + id3tags[tag_read_idx]->id3.id3v2len & ~1, + SEEK_SET); /* Make it read more data */ filling = true; |