diff options
-rw-r--r-- | media/libstagefright/AudioPlayer.cpp | 8 | ||||
-rw-r--r-- | media/libstagefright/AwesomePlayer.cpp | 13 | ||||
-rw-r--r-- | media/libstagefright/include/AwesomePlayer.h | 1 |
3 files changed, 21 insertions, 1 deletions
diff --git a/media/libstagefright/AudioPlayer.cpp b/media/libstagefright/AudioPlayer.cpp index 69f9c23..dd69e6b 100644 --- a/media/libstagefright/AudioPlayer.cpp +++ b/media/libstagefright/AudioPlayer.cpp @@ -84,7 +84,13 @@ status_t AudioPlayer::start(bool sourceAlreadyStarted) { CHECK(mFirstBuffer == NULL); - mFirstBufferResult = mSource->read(&mFirstBuffer); + MediaSource::ReadOptions options; + if (mSeeking) { + options.setSeekTo(mSeekTimeUs); + mSeeking = false; + } + + mFirstBufferResult = mSource->read(&mFirstBuffer, &options); if (mFirstBufferResult == INFO_FORMAT_CHANGED) { LOGV("INFO_FORMAT_CHANGED!!!"); diff --git a/media/libstagefright/AwesomePlayer.cpp b/media/libstagefright/AwesomePlayer.cpp index cccd0b7..dcc268f 100644 --- a/media/libstagefright/AwesomePlayer.cpp +++ b/media/libstagefright/AwesomePlayer.cpp @@ -831,6 +831,8 @@ status_t AwesomePlayer::startAudioPlayer_l() { if (!(mFlags & AUDIOPLAYER_STARTED)) { mFlags |= AUDIOPLAYER_STARTED; + bool wasSeeking = mAudioPlayer->isSeeking(); + // We've already started the MediaSource in order to enable // the prefetcher to read its data. status_t err = mAudioPlayer->start( @@ -840,6 +842,13 @@ status_t AwesomePlayer::startAudioPlayer_l() { notifyListener_l(MEDIA_ERROR, MEDIA_ERROR_UNKNOWN, err); return err; } + + if (wasSeeking) { + CHECK(!mAudioPlayer->isSeeking()); + + // We will have finished the seek while starting the audio player. + postAudioSeekComplete_l(); + } } else { mAudioPlayer->resume(); } @@ -1957,6 +1966,10 @@ void AwesomePlayer::postAudioEOS(int64_t delayUs) { void AwesomePlayer::postAudioSeekComplete() { Mutex::Autolock autoLock(mLock); + postAudioSeekComplete_l(); +} + +void AwesomePlayer::postAudioSeekComplete_l() { postCheckAudioStatusEvent_l(0 /* delayUs */); } diff --git a/media/libstagefright/include/AwesomePlayer.h b/media/libstagefright/include/AwesomePlayer.h index fd3ddf7..835d2bb 100644 --- a/media/libstagefright/include/AwesomePlayer.h +++ b/media/libstagefright/include/AwesomePlayer.h @@ -281,6 +281,7 @@ private: void ensureCacheIsFetching_l(); status_t startAudioPlayer_l(); + void postAudioSeekComplete_l(); void shutdownVideoDecoder_l(); void setNativeWindow_l(const sp<ANativeWindow> &native); |