diff options
-rw-r--r-- | media/libstagefright/AudioPlayer.cpp | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/media/libstagefright/AudioPlayer.cpp b/media/libstagefright/AudioPlayer.cpp index 95441bc..1f9383b 100644 --- a/media/libstagefright/AudioPlayer.cpp +++ b/media/libstagefright/AudioPlayer.cpp @@ -102,7 +102,6 @@ status_t AudioPlayer::start(bool sourceAlreadyStarted) { MediaSource::ReadOptions options; if (mSeeking) { options.setSeekTo(mSeekTimeUs); - mSeeking = false; } mFirstBufferResult = mSource->read(&mFirstBuffer, &options); @@ -112,8 +111,25 @@ status_t AudioPlayer::start(bool sourceAlreadyStarted) { CHECK(mFirstBuffer == NULL); mFirstBufferResult = OK; mIsFirstBuffer = false; + + if (mSeeking) { + mPositionTimeRealUs = 0; + mPositionTimeMediaUs = mSeekTimeUs; + mSeeking = false; + } + } else { mIsFirstBuffer = true; + + if (mSeeking) { + mPositionTimeRealUs = 0; + if (mFirstBuffer == NULL || !mFirstBuffer->meta_data()->findInt64( + kKeyTime, &mPositionTimeMediaUs)) { + return UNKNOWN_ERROR; + } + mSeeking = false; + } + } sp<MetaData> format = mSource->getFormat(); |