diff options
| author | Dave Chapman <dave@dchapman.com> | 2005-06-11 19:14:40 +0000 |
|---|---|---|
| committer | Dave Chapman <dave@dchapman.com> | 2005-06-11 19:14:40 +0000 |
| commit | 8f0a0fed4e40c1fb831744ca1cc34f20a93d85b4 (patch) | |
| tree | 5aec170ab4891367dca02be16f002b7bb41c457d /apps | |
| parent | 94b917e9ee1e287a2713fad52754250d591e0e57 (diff) | |
| download | rockbox-8f0a0fed4e40c1fb831744ca1cc34f20a93d85b4.zip rockbox-8f0a0fed4e40c1fb831744ca1cc34f20a93d85b4.tar.gz rockbox-8f0a0fed4e40c1fb831744ca1cc34f20a93d85b4.tar.bz2 rockbox-8f0a0fed4e40c1fb831744ca1cc34f20a93d85b4.tar.xz | |
Estimate (poorly) the duration of an Ogg track, and display elapsed time in WPS
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6681 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
| -rw-r--r-- | apps/playback.c | 12 | ||||
| -rw-r--r-- | apps/plugins/codecvorbis.c | 4 |
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; |