summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/playback.c12
-rw-r--r--apps/plugins/codecvorbis.c4
2 files changed, 10 insertions, 6 deletions
diff --git a/apps/playback.c b/apps/playback.c
index 8d5ba3c..739496e 100644
--- a/apps/playback.c
+++ b/apps/playback.c
@@ -831,11 +831,13 @@ bool audio_load_track(int offset, bool start_play, int peek_offset)
tracks[track_widx].id3.bitrate=(buf[48]|(buf[49]<<8)|(buf[50]<<16)|(buf[51]<<24))/1000;
tracks[track_widx].id3.vbr=true;
- /* I don't yet know how to calculate the totalsamples */
- totalsamples=0;
-
- /* Calculate the length in ms */
- tracks[track_widx].id3.length=(totalsamples/tracks[track_widx].id3.frequency)*1000;
+ if (tracks[track_widx].id3.bitrate!=0) {
+ /* A _really_ stupid and inaccurate calculation, but the best
+ I can do at the moment. */
+ tracks[track_widx].id3.length=(tracks[track_widx].filesize)/(tracks[track_widx].id3.bitrate/8);
+ } else {
+ tracks[track_widx].id3.length=0;
+ }
lseek(fd, 0, SEEK_SET);
strncpy(tracks[track_widx].id3.path,trackname,sizeof(tracks[track_widx].id3.path));
diff --git a/apps/plugins/codecvorbis.c b/apps/plugins/codecvorbis.c
index 6c512f7..a1f39f0 100644
--- a/apps/plugins/codecvorbis.c
+++ b/apps/plugins/codecvorbis.c
@@ -147,7 +147,9 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parm)
rb->yield();
while (!ci->audiobuffer_insert(pcmbuf, n))
rb->yield();
-
+
+ ci->set_elapsed(ov_time_tell(&vf));
+
#if BYTE_ORDER == BIG_ENDIAN
for (i=0;i<n;i+=2) {
x=pcmbuf[i]; pcmbuf[i]=pcmbuf[i+1]; pcmbuf[i+1]=x;