summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/wps.c20
-rw-r--r--firmware/id3.h1
-rw-r--r--firmware/mpeg.c4
3 files changed, 18 insertions, 7 deletions
diff --git a/apps/wps.c b/apps/wps.c
index 031c20b9f7..a4d7292c64 100644
--- a/apps/wps.c
+++ b/apps/wps.c
@@ -95,11 +95,6 @@ static void draw_screen(struct mp3entry* id3)
95 lcd_puts(0, l++, id3->album?id3->album:""); 95 lcd_puts(0, l++, id3->album?id3->album:"");
96 lcd_puts(0, l++, id3->artist?id3->artist:""); 96 lcd_puts(0, l++, id3->artist?id3->artist:"");
97 97
98 snprintf(buffer,sizeof(buffer), "Time: %d:%02d",
99 id3->length / 60000,
100 id3->length % 60000 / 1000 );
101 lcd_puts(0, l++, buffer);
102
103 snprintf(buffer,sizeof(buffer), "%d kbits", id3->bitrate); 98 snprintf(buffer,sizeof(buffer), "%d kbits", id3->bitrate);
104 99
105 lcd_puts(0, l++, buffer); 100 lcd_puts(0, l++, buffer);
@@ -124,6 +119,7 @@ void wps_show(void)
124 struct mp3entry* id3 = mpeg_current_track(); 119 struct mp3entry* id3 = mpeg_current_track();
125 int lastlength=0, lastsize=0, lastrate=0; 120 int lastlength=0, lastsize=0, lastrate=0;
126 int lastartist=0, lastalbum=0, lasttitle=0; 121 int lastartist=0, lastalbum=0, lasttitle=0;
122 char buffer[32];
127 123
128 while ( 1 ) { 124 while ( 1 ) {
129 int i; 125 int i;
@@ -144,7 +140,17 @@ void wps_show(void)
144 lasttitle = id3->title[0]; 140 lasttitle = id3->title[0];
145 } 141 }
146 142
147 for ( i=0;i<20;i++ ) { 143#ifdef HAVE_LCD_BITMAP
144 snprintf(buffer,sizeof(buffer), "Time: %d:%02d / %d:%02d",
145 id3->elapsed / 60000,
146 id3->elapsed % 60000 / 1000,
147 id3->length / 60000,
148 id3->length % 60000 / 1000 );
149 lcd_puts(0, 6, buffer);
150 lcd_update();
151#endif
152
153 for ( i=0;i<5;i++ ) {
148 switch ( button_get(false) ) { 154 switch ( button_get(false) ) {
149 case BUTTON_ON: 155 case BUTTON_ON:
150 return; 156 return;
@@ -194,7 +200,7 @@ void wps_show(void)
194 mpeg_stop(); 200 mpeg_stop();
195 break; 201 break;
196 } 202 }
197 sleep(HZ/20); 203 sleep(HZ/10);
198 } 204 }
199 } 205 }
200} 206}
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;