summaryrefslogtreecommitdiff
path: root/firmware/mpeg.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/mpeg.c')
-rw-r--r--firmware/mpeg.c25
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
747void 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
746static void mpeg_thread(void) 763static 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;