summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/AudioPlayer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'media/libstagefright/AudioPlayer.cpp')
-rw-r--r--media/libstagefright/AudioPlayer.cpp18
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();