summaryrefslogtreecommitdiff
path: root/firmware/mpeg.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/mpeg.c')
-rw-r--r--firmware/mpeg.c27
1 files changed, 14 insertions, 13 deletions
diff --git a/firmware/mpeg.c b/firmware/mpeg.c
index c21997e701..fe71b3902b 100644
--- a/firmware/mpeg.c
+++ b/firmware/mpeg.c
@@ -281,15 +281,18 @@ void DEI3(void)
281 DTCR3 = last_dma_chunk_size & 0xffff; 281 DTCR3 = last_dma_chunk_size & 0xffff;
282 SAR3 = (unsigned int)mp3buf + mp3buf_read; 282 SAR3 = (unsigned int)mp3buf + mp3buf_read;
283 283
284 /* will we move across the track boundary? */ 284 /* several tracks loaded? */
285 if (( mp3buf_read <= id3tags[0].mempos ) && 285 if ( last_tag>1 ) {
286 ( (mp3buf_read + last_dma_chunk_size) > id3tags[0].mempos )) { 286 /* will we move across the track boundary? */
287 /* shift array so index 0 is current track */ 287 if (( mp3buf_read <= id3tags[1].mempos ) &&
288 int i; 288 ((mp3buf_read+last_dma_chunk_size) > id3tags[1].mempos )) {
289 for (i=0; i<last_tag-1; i++) 289 /* shift array so index 0 is current track */
290 id3tags[i] = id3tags[i+1]; 290 int i;
291 if ( last_tag ) 291 for (i=0; i<last_tag-1; i++)
292 id3tags[i] = id3tags[i+1];
292 last_tag--; 293 last_tag--;
294 DEBUGF("Track change\n");
295 }
293 } 296 }
294 } 297 }
295 else 298 else
@@ -379,11 +382,9 @@ static void mpeg_thread(void)
379 382
380 /* grab id3 tag of new file and 383 /* grab id3 tag of new file and
381 remember where in memory it starts */ 384 remember where in memory it starts */
382 if ( last_tag < MAX_ID3_TAGS ) { 385 mp3info(&(id3tags[0].id3), ev.data);
383 mp3info(&(id3tags[last_tag].id3), ev.data); 386 id3tags[0].mempos = mp3buf_write;
384 id3tags[last_tag].mempos = mp3buf_write; 387 last_tag=1;
385 last_tag++;
386 }
387 388
388 /* Make it read more data */ 389 /* Make it read more data */
389 filling = true; 390 filling = true;