diff options
-rw-r--r-- | firmware/mpeg.c | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/firmware/mpeg.c b/firmware/mpeg.c index e91f1191b0..4d26d4b3fe 100644 --- a/firmware/mpeg.c +++ b/firmware/mpeg.c | |||
@@ -697,7 +697,7 @@ static int new_file(int steps) | |||
697 | { | 697 | { |
698 | /* skip past id3v2 tag (to an even byte) */ | 698 | /* skip past id3v2 tag (to an even byte) */ |
699 | lseek(mpeg_file, | 699 | lseek(mpeg_file, |
700 | id3tags[new_tag_idx]->id3.id3v2len & ~1, | 700 | id3tags[new_tag_idx]->id3.id3v2len, |
701 | SEEK_SET); | 701 | SEEK_SET); |
702 | id3tags[new_tag_idx]->id3.index = steps; | 702 | id3tags[new_tag_idx]->id3.index = steps; |
703 | id3tags[new_tag_idx]->id3.offset = 0; | 703 | id3tags[new_tag_idx]->id3.offset = 0; |
@@ -743,6 +743,23 @@ static void track_change(void) | |||
743 | update_playlist(); | 743 | update_playlist(); |
744 | } | 744 | } |
745 | 745 | ||
746 | #ifdef DEBUG | ||
747 | void hexdump(unsigned char *buf, int len) | ||
748 | { | ||
749 | int i; | ||
750 | |||
751 | for(i = 0;i < len;i++) | ||
752 | { | ||
753 | if(i && (i & 15) == 0) | ||
754 | { | ||
755 | DEBUGF("\n"); | ||
756 | } | ||
757 | DEBUGF("%02x ", buf[i]); | ||
758 | } | ||
759 | DEBUGF("\n"); | ||
760 | } | ||
761 | #endif | ||
762 | |||
746 | static void mpeg_thread(void) | 763 | static void mpeg_thread(void) |
747 | { | 764 | { |
748 | static int pause_tick = 0; | 765 | static int pause_tick = 0; |
@@ -1239,13 +1256,17 @@ static void mpeg_thread(void) | |||
1239 | boundary when we reach the end of the file */ | 1256 | boundary when we reach the end of the file */ |
1240 | if (len < amount_to_read) { | 1257 | if (len < amount_to_read) { |
1241 | /* Skip id3v1 tag */ | 1258 | /* Skip id3v1 tag */ |
1259 | DEBUGF("Skipping ID3v1 tag\n"); | ||
1242 | len -= id3tags[tag_read_idx]->id3.id3v1len; | 1260 | len -= id3tags[tag_read_idx]->id3.id3v1len; |
1261 | /* The very rare case when the buffer wrapped | ||
1262 | inside the tag must be taken care of */ | ||
1243 | if(len < 0) | 1263 | if(len < 0) |
1244 | len = 0; | 1264 | len = 0; |
1245 | len = (len + 1) & 0xfffffffe; | 1265 | len = (len + 1) & 0xfffffffe; |
1246 | } | 1266 | } |
1247 | 1267 | ||
1248 | mp3buf_write += len; | 1268 | mp3buf_write += len; |
1269 | |||
1249 | if(mp3buf_write >= mp3buflen) | 1270 | if(mp3buf_write >= mp3buflen) |
1250 | { | 1271 | { |
1251 | mp3buf_write = 0; | 1272 | mp3buf_write = 0; |