summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
Diffstat (limited to 'firmware')
-rw-r--r--firmware/export/mp3_playback.h1
-rw-r--r--firmware/mp3_playback.c13
2 files changed, 14 insertions, 0 deletions
diff --git a/firmware/export/mp3_playback.h b/firmware/export/mp3_playback.h
index 4da1ffce6d..3611c1c9c1 100644
--- a/firmware/export/mp3_playback.h
+++ b/firmware/export/mp3_playback.h
@@ -42,6 +42,7 @@ void mp3_play_data(const unsigned char* start, int size,
42 void (*get_more)(unsigned char** start, int* size) /* callback fn */ 42 void (*get_more)(unsigned char** start, int* size) /* callback fn */
43); 43);
44void mp3_play_pause(bool play); 44void mp3_play_pause(bool play);
45bool mp3_pause_done(void);
45void mp3_play_stop(void); 46void mp3_play_stop(void);
46long mp3_get_playtime(void); 47long mp3_get_playtime(void);
47void mp3_reset_playtime(void); 48void mp3_reset_playtime(void);
diff --git a/firmware/mp3_playback.c b/firmware/mp3_playback.c
index 67a5ff739b..a8d2d698eb 100644
--- a/firmware/mp3_playback.c
+++ b/firmware/mp3_playback.c
@@ -542,6 +542,19 @@ void mp3_play_pause(bool play)
542 paused = true; 542 paused = true;
543 cumulative_ticks += current_tick - playstart_tick; 543 cumulative_ticks += current_tick - playstart_tick;
544 } 544 }
545}
546
547bool mp3_pause_done(void)
548{
549 unsigned long frame_count;
550
551 if (!paused)
552 return false;
553
554 mas_readmem(MAS_BANK_D0, MAS_D0_MPEG_FRAME_COUNT, &frame_count, 1);
555 /* This works because the frame counter never wraps,
556 * i.e. zero always means lost sync. */
557 return frame_count == 0;
545} 558}
546 559
547void mp3_play_stop(void) 560void mp3_play_stop(void)