summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
Diffstat (limited to 'firmware')
-rw-r--r--firmware/id3.h1
-rw-r--r--firmware/mpeg.c4
2 files changed, 5 insertions, 0 deletions
diff --git a/firmware/id3.h b/firmware/id3.h
index 4729d5355f..1f8aef6310 100644
--- a/firmware/id3.h
+++ b/firmware/id3.h
@@ -33,6 +33,7 @@ struct mp3entry {
33 int id3v1len; 33 int id3v1len;
34 int filesize; /* in bytes */ 34 int filesize; /* in bytes */
35 int length; /* song length */ 35 int length; /* song length */
36 int elapsed; /* ms played */
36 37
37 /* these following two fields are used for local buffering */ 38 /* these following two fields are used for local buffering */
38 char id3v2buf[300]; 39 char id3v2buf[300];
diff --git a/firmware/mpeg.c b/firmware/mpeg.c
index d130a8b572..ab99fa744c 100644
--- a/firmware/mpeg.c
+++ b/firmware/mpeg.c
@@ -150,6 +150,7 @@ static struct {
150 int mempos; 150 int mempos;
151} id3tags[MAX_ID3_TAGS]; 151} id3tags[MAX_ID3_TAGS];
152static int last_tag = 0; 152static int last_tag = 0;
153static int last_dma_tick = 0;
153 154
154static void create_fliptable(void) 155static void create_fliptable(void)
155{ 156{
@@ -228,6 +229,8 @@ static void dma_tick(void)
228 start_dma(); 229 start_dma();
229 } 230 }
230 } 231 }
232 id3tags[0].id3.elapsed += (current_tick - last_dma_tick) * 1000 / HZ;
233 last_dma_tick = current_tick;
231} 234}
232 235
233static void bitswap(unsigned short *data, int length) 236static void bitswap(unsigned short *data, int length)
@@ -387,6 +390,7 @@ static void mpeg_thread(void)
387 mp3info(&(id3tags[0].id3), ev.data); 390 mp3info(&(id3tags[0].id3), ev.data);
388 id3tags[0].mempos = mp3buf_write; 391 id3tags[0].mempos = mp3buf_write;
389 last_tag=1; 392 last_tag=1;
393 id3tags[0].id3.elapsed = 0;
390 394
391 /* Make it read more data */ 395 /* Make it read more data */
392 filling = true; 396 filling = true;