summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorMagnus Holmgren <magnushol@gmail.com>2009-08-03 20:28:16 +0000
committerMagnus Holmgren <magnushol@gmail.com>2009-08-03 20:28:16 +0000
commit04be8dd7fe5378e39efbf5edd9ad447d17aabc06 (patch)
tree4df99c785b310009ac83a628338c1946f0c286cd /apps
parent3de77e0d47556f1b30f01a3e83c5e1d8d0d953e8 (diff)
downloadrockbox-04be8dd7fe5378e39efbf5edd9ad447d17aabc06.tar.gz
rockbox-04be8dd7fe5378e39efbf5edd9ad447d17aabc06.zip
Fix inaccurate time display for 44.1 (and 22.05) kHz MP3 audio tracks. Time was off by about 0.2%. Doesn't sound much, but after one hour, that's 8 seconds. Also fix a problem when seeking to near the end of a file.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22145 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r--apps/codecs/mpa.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/apps/codecs/mpa.c b/apps/codecs/mpa.c
index d5b4d02889..f248744c50 100644
--- a/apps/codecs/mpa.c
+++ b/apps/codecs/mpa.c
@@ -130,13 +130,14 @@ static int get_file_pos(int newtime)
130 return -1; 130 return -1;
131 } 131 }
132 132
133 pos += id3->first_frame_offset;
134
135 /* Don't seek right to the end of the file so that we can 133 /* Don't seek right to the end of the file so that we can
136 transition properly to the next song */ 134 transition properly to the next song */
137 if (pos >= (int)(id3->filesize - id3->id3v1len)) 135 if (pos >= (int)(id3->filesize - id3->id3v1len))
138 pos = id3->filesize - id3->id3v1len - 1; 136 pos = id3->filesize - id3->id3v1len - 1;
139 137
138 /* id3->filesize excludes id3->first_frame_offset, so add it now */
139 pos += id3->first_frame_offset;
140
140 return pos; 141 return pos;
141} 142}
142 143
@@ -492,7 +493,7 @@ next_track:
492 } 493 }
493 494
494 samplesdone += framelength; 495 samplesdone += framelength;
495 ci->set_elapsed(samplesdone / (current_frequency / 1000)); 496 ci->set_elapsed((samplesdone * 1000) / current_frequency);
496 } 497 }
497 498
498 /* wait for synth idle - MT only*/ 499 /* wait for synth idle - MT only*/