summaryrefslogtreecommitdiff
path: root/firmware/mpeg.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/mpeg.c')
-rw-r--r--firmware/mpeg.c52
1 files changed, 30 insertions, 22 deletions
diff --git a/firmware/mpeg.c b/firmware/mpeg.c
index fae6f5a3b0..eb065d5a51 100644
--- a/firmware/mpeg.c
+++ b/firmware/mpeg.c
@@ -35,7 +35,12 @@
35#endif 35#endif
36 36
37#define MPEG_CHUNKSIZE 0x20000 37#define MPEG_CHUNKSIZE 0x20000
38#ifdef ARCHOS_RECORDER
39/* recorder is slower and needs more load time */
40#define MPEG_LOW_WATER 0x40000
41#else
38#define MPEG_LOW_WATER 0x30000 42#define MPEG_LOW_WATER 0x30000
43#endif
39 44
40#define MPEG_PLAY 1 45#define MPEG_PLAY 1
41#define MPEG_STOP 2 46#define MPEG_STOP 2
@@ -450,25 +455,28 @@ static int new_file(bool next_track)
450{ 455{
451 char *trackname; 456 char *trackname;
452 457
453 trackname = peek_next_track( next_track ? 1 : -1 ); 458 do {
454 if ( !trackname ) 459 trackname = peek_next_track( next_track ? 1 : -1 );
455 return -1; 460 if ( !trackname )
456 461 return -1;
457 DEBUGF("playing %s\n", trackname); 462
458 463 DEBUGF("playing %s\n", trackname);
459 /* grab id3 tag of new file and remember where in memory it starts */ 464
460 if ( last_tag < MAX_ID3_TAGS ) { 465 mpeg_file = open(trackname, O_RDONLY);
461 mp3info(&(id3tags[last_tag].id3), trackname); 466 if(mpeg_file < 0) {
462 id3tags[last_tag].mempos = mp3buf_write; 467 DEBUGF("Couldn't open file: %s\n",trackname);
463 last_tag++; 468 }
464 } 469 else {
470 /* grab id3 tag of new file and remember where
471 in memory it starts */
472 if ( last_tag < MAX_ID3_TAGS ) {
473 mp3info(&(id3tags[last_tag].id3), trackname);
474 id3tags[last_tag].mempos = mp3buf_write;
475 last_tag++;
476 }
477 }
478 } while ( mpeg_file < 0 );
465 479
466 mpeg_file = open(trackname, O_RDONLY);
467 if(mpeg_file < 0)
468 {
469 debugf("Couldn't open file\n");
470 return -1;
471 }
472 return 0; 480 return 0;
473} 481}
474 482
@@ -513,10 +521,10 @@ static void mpeg_thread(void)
513 close(mpeg_file); 521 close(mpeg_file);
514 522
515 mpeg_file = open((char*)ev.data, O_RDONLY); 523 mpeg_file = open((char*)ev.data, O_RDONLY);
516 if(mpeg_file < 0) 524 while (mpeg_file < 0) {
517 { 525 DEBUGF("Couldn't open file: %s\n",ev.data);
518 DEBUGF("Couldn't open %s\n",ev.data); 526 if ( new_file(true) == -1 )
519 break; 527 return;
520 } 528 }
521 529
522 /* grab id3 tag of new file and 530 /* grab id3 tag of new file and