From f9d566ef54954c5e7b913275438e8022fb194ad6 Mon Sep 17 00:00:00 2001 From: Gloria Wang Date: Wed, 27 Jul 2011 14:10:53 -0700 Subject: [PATCH] Re-calculate mCurrentTimeUs for MP3 CBR seek because we might have called Resync() which changes mCurrentPos. For bug 4869063. Change-Id: I5c5876ad81adf0ced1a6e6c18cda6905bf38f731 --- media/libstagefright/MP3Extractor.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/media/libstagefright/MP3Extractor.cpp b/media/libstagefright/MP3Extractor.cpp index 5bbed5d93d..92e84c29fe 100644 --- a/media/libstagefright/MP3Extractor.cpp +++ b/media/libstagefright/MP3Extractor.cpp @@ -407,6 +407,8 @@ status_t MP3Source::read( int64_t seekTimeUs; ReadOptions::SeekMode mode; + bool seekCBR = false; + if (options != NULL && options->getSeekTo(&seekTimeUs, &mode)) { int64_t actualSeekTimeUs = seekTimeUs; if (mSeeker == NULL @@ -421,6 +423,7 @@ status_t MP3Source::read( mCurrentTimeUs = seekTimeUs; mCurrentPos = mFirstFramePos + seekTimeUs * bitrate / 8000000; + seekCBR = true; } else { mCurrentTimeUs = actualSeekTimeUs; } @@ -454,6 +457,13 @@ status_t MP3Source::read( && GetMPEGAudioFrameSize( header, &frame_size, &sample_rate, NULL, &bitrate, &num_samples)) { + + // re-calculate mCurrentTimeUs because we might have called Resync() + if (seekCBR) { + mCurrentTimeUs = (mCurrentPos - mFirstFramePos) * 8000 / bitrate; + mBasisTimeUs = mCurrentTimeUs; + } + break; } -- 2.11.0