diff options
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/mpeg.c | 24 | ||||
-rw-r--r-- | firmware/mpeg.h | 1 |
2 files changed, 23 insertions, 2 deletions
diff --git a/firmware/mpeg.c b/firmware/mpeg.c index 082ed5067c..00b2d660a3 100644 --- a/firmware/mpeg.c +++ b/firmware/mpeg.c | |||
@@ -139,11 +139,13 @@ int mpeg_sound_default(int setting) | |||
139 | } | 139 | } |
140 | 140 | ||
141 | /* list of tracks in memory */ | 141 | /* list of tracks in memory */ |
142 | #define MAX_ID3_TAGS 4 | 142 | #define MAX_ID3_TAGS 12 |
143 | static struct { | 143 | static struct { |
144 | struct mp3entry id3; | 144 | struct mp3entry id3; |
145 | int mempos; | 145 | int mempos; |
146 | } id3tags[MAX_ID3_TAGS]; | 146 | } id3tags[MAX_ID3_TAGS]; |
147 | static unsigned int current_track_counter = 0; | ||
148 | static unsigned int last_track_counter = 0; | ||
147 | 149 | ||
148 | #ifndef SIMULATOR | 150 | #ifndef SIMULATOR |
149 | static int last_tag = 0; | 151 | static int last_tag = 0; |
@@ -582,6 +584,8 @@ static void mpeg_thread(void) | |||
582 | /* Tell the file loading code that we want to start playing | 584 | /* Tell the file loading code that we want to start playing |
583 | as soon as we have some data */ | 585 | as soon as we have some data */ |
584 | play_pending = true; | 586 | play_pending = true; |
587 | |||
588 | current_track_counter++; | ||
585 | break; | 589 | break; |
586 | 590 | ||
587 | case MPEG_STOP: | 591 | case MPEG_STOP: |
@@ -629,6 +633,8 @@ static void mpeg_thread(void) | |||
629 | /* Tell the file loading code that we want to start playing | 633 | /* Tell the file loading code that we want to start playing |
630 | as soon as we have some data */ | 634 | as soon as we have some data */ |
631 | play_pending = true; | 635 | play_pending = true; |
636 | |||
637 | current_track_counter++; | ||
632 | } | 638 | } |
633 | break; | 639 | break; |
634 | 640 | ||
@@ -655,6 +661,8 @@ static void mpeg_thread(void) | |||
655 | /* Tell the file loading code that we want to start playing | 661 | /* Tell the file loading code that we want to start playing |
656 | as soon as we have some data */ | 662 | as soon as we have some data */ |
657 | play_pending = true; | 663 | play_pending = true; |
664 | |||
665 | current_track_counter++; | ||
658 | } | 666 | } |
659 | break; | 667 | break; |
660 | 668 | ||
@@ -820,6 +828,8 @@ static void mpeg_thread(void) | |||
820 | DEBUGF("tc: %d, %x\n", i, id3tags[i].mempos); | 828 | DEBUGF("tc: %d, %x\n", i, id3tags[i].mempos); |
821 | } | 829 | } |
822 | last_tag--; | 830 | last_tag--; |
831 | |||
832 | current_track_counter++; | ||
823 | break; | 833 | break; |
824 | 834 | ||
825 | case SYS_USB_CONNECTED: | 835 | case SYS_USB_CONNECTED: |
@@ -885,6 +895,16 @@ struct mp3entry* mpeg_current_track(void) | |||
885 | return &(id3tags[0].id3); | 895 | return &(id3tags[0].id3); |
886 | } | 896 | } |
887 | 897 | ||
898 | bool mpeg_has_changed_track(void) | ||
899 | { | ||
900 | if(last_track_counter != current_track_counter) | ||
901 | { | ||
902 | last_track_counter = current_track_counter; | ||
903 | return true; | ||
904 | } | ||
905 | return false; | ||
906 | } | ||
907 | |||
888 | void mpeg_play(char* trackname) | 908 | void mpeg_play(char* trackname) |
889 | { | 909 | { |
890 | #ifdef SIMULATOR | 910 | #ifdef SIMULATOR |
@@ -1196,5 +1216,5 @@ void mpeg_init(int volume, int bass, int treble, int loudness, int bass_boost, i | |||
1196 | mpeg_sound_set(SOUND_SUPERBASS, bass_boost); | 1216 | mpeg_sound_set(SOUND_SUPERBASS, bass_boost); |
1197 | mpeg_sound_set(SOUND_AVC, avc); | 1217 | mpeg_sound_set(SOUND_AVC, avc); |
1198 | #endif | 1218 | #endif |
1199 | #endif /* SIMULATOR */ | 1219 | #endif /* !SIMULATOR */ |
1200 | } | 1220 | } |
diff --git a/firmware/mpeg.h b/firmware/mpeg.h index 6a86b3400d..a267079579 100644 --- a/firmware/mpeg.h +++ b/firmware/mpeg.h | |||
@@ -37,6 +37,7 @@ int mpeg_val2phys(int setting, int value); | |||
37 | char *mpeg_sound_unit(int setting); | 37 | char *mpeg_sound_unit(int setting); |
38 | int mpeg_sound_numdecimals(int setting); | 38 | int mpeg_sound_numdecimals(int setting); |
39 | struct mp3entry* mpeg_current_track(void); | 39 | struct mp3entry* mpeg_current_track(void); |
40 | bool mpeg_has_changed_track(void); | ||
40 | 41 | ||
41 | #define SOUND_VOLUME 0 | 42 | #define SOUND_VOLUME 0 |
42 | #define SOUND_BASS 1 | 43 | #define SOUND_BASS 1 |