diff options
-rw-r--r-- | firmware/mpeg.c | 27 |
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; |