summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/MP3Extractor.cpp
diff options
context:
space:
mode:
authorAndreas Huber <andih@google.com>2010-06-23 11:11:58 -0700
committerAndreas Huber <andih@google.com>2010-06-23 11:11:58 -0700
commit3e0339f9ec42c2c31deb632254e9cc8a06d3db91 (patch)
treed85036dff22fd4a5a87e1592e405b65dda3b4e9a /media/libstagefright/MP3Extractor.cpp
parentdadd0d1e7d5fbb88fd3420438c590a0bb4c18af5 (diff)
downloadframeworks_av-3e0339f9ec42c2c31deb632254e9cc8a06d3db91.zip
frameworks_av-3e0339f9ec42c2c31deb632254e9cc8a06d3db91.tar.gz
frameworks_av-3e0339f9ec42c2c31deb632254e9cc8a06d3db91.tar.bz2
Fix a number of timestamp mismatches in the mp3 extractor and decoder that would lead to invalid reporting of the current playback time for mono and/or non-44100 kHz mp3s.
Change-Id: I11abc05b62a958ffbc99ca997cd184a2f2199352 related-to-bug: 2667479
Diffstat (limited to 'media/libstagefright/MP3Extractor.cpp')
-rw-r--r--media/libstagefright/MP3Extractor.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/media/libstagefright/MP3Extractor.cpp b/media/libstagefright/MP3Extractor.cpp
index f9251e1..69c3a72 100644
--- a/media/libstagefright/MP3Extractor.cpp
+++ b/media/libstagefright/MP3Extractor.cpp
@@ -634,6 +634,7 @@ status_t MP3Source::read(
}
size_t frame_size;
+ int bitrate;
for (;;) {
ssize_t n = mDataSource->readAt(mCurrentPos, buffer->data(), 4);
if (n < 4) {
@@ -646,7 +647,7 @@ status_t MP3Source::read(
uint32_t header = U32_AT((const uint8_t *)buffer->data());
if ((header & kMask) == (mFixedHeader & kMask)
- && get_mp3_frame_size(header, &frame_size)) {
+ && get_mp3_frame_size(header, &frame_size, NULL, NULL, &bitrate)) {
break;
}
@@ -683,7 +684,7 @@ status_t MP3Source::read(
buffer->meta_data()->setInt64(kKeyTime, mCurrentTimeUs);
mCurrentPos += frame_size;
- mCurrentTimeUs += 1152 * 1000000 / 44100;
+ mCurrentTimeUs += frame_size * 8000ll / bitrate;
*out = buffer;