summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjörn Stenberg <bjorn@haxx.se>2002-08-14 10:15:27 +0000
committerBjörn Stenberg <bjorn@haxx.se>2002-08-14 10:15:27 +0000
commit66f9bccd4746e222a5c1bea7f1fe57d4f2124f5a (patch)
tree3bac192bea9a81d4143d01cf952e8e9198b3b456
parent41977da3d5169c44f996db819310b1a48f704054 (diff)
downloadrockbox-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.c11
-rw-r--r--firmware/mpeg.c8
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;