Loading media/libstagefright/AwesomePlayer.cpp +20 −17 Original line number Diff line number Diff line Loading @@ -423,21 +423,23 @@ void AwesomePlayer::onBufferingUpdate() { } mBufferingEventPending = false; if (mDurationUs >= 0) { int64_t durationUs; { Mutex::Autolock autoLock(mMiscStateLock); durationUs = mDurationUs; } if (durationUs >= 0) { int64_t cachedDurationUs = mPrefetcher->getCachedDurationUs(); LOGV("cache holds %.2f secs worth of data.", cachedDurationUs / 1E6); int64_t positionUs = 0; if (mVideoSource != NULL) { positionUs = mVideoTimeUs; } else if (mAudioPlayer != NULL) { positionUs = mAudioPlayer->getMediaTimeUs(); } int64_t positionUs; getPosition(&positionUs); cachedDurationUs += positionUs; double percentage = (double)cachedDurationUs / mDurationUs; double percentage = (double)cachedDurationUs / durationUs; notifyListener_l(MEDIA_BUFFERING_UPDATE, percentage * 100.0); postBufferingEvent_l(); Loading Loading @@ -653,7 +655,7 @@ status_t AwesomePlayer::setLooping(bool shouldLoop) { } status_t AwesomePlayer::getDuration(int64_t *durationUs) { Mutex::Autolock autoLock(mLock); Mutex::Autolock autoLock(mMiscStateLock); if (mDurationUs < 0) { return UNKNOWN_ERROR; Loading @@ -665,12 +667,8 @@ status_t AwesomePlayer::getDuration(int64_t *durationUs) { } status_t AwesomePlayer::getPosition(int64_t *positionUs) { Mutex::Autolock autoLock(mLock); return getPosition_l(positionUs); } status_t AwesomePlayer::getPosition_l(int64_t *positionUs) { if (mVideoSource != NULL) { Mutex::Autolock autoLock(mMiscStateLock); *positionUs = mVideoTimeUs; } else if (mAudioPlayer != NULL) { *positionUs = mAudioPlayer->getMediaTimeUs(); Loading Loading @@ -748,6 +746,7 @@ status_t AwesomePlayer::initAudioDecoder() { if (mAudioSource != NULL) { int64_t durationUs; if (mAudioTrack->getFormat()->findInt64(kKeyDuration, &durationUs)) { Mutex::Autolock autoLock(mMiscStateLock); if (mDurationUs < 0 || durationUs > mDurationUs) { mDurationUs = durationUs; } Loading Loading @@ -778,6 +777,7 @@ status_t AwesomePlayer::initVideoDecoder() { if (mVideoSource != NULL) { int64_t durationUs; if (mVideoTrack->getFormat()->findInt64(kKeyDuration, &durationUs)) { Mutex::Autolock autoLock(mMiscStateLock); if (mDurationUs < 0 || durationUs > mDurationUs) { mDurationUs = durationUs; } Loading Loading @@ -857,7 +857,10 @@ void AwesomePlayer::onVideoEvent() { int64_t timeUs; CHECK(mVideoBuffer->meta_data()->findInt64(kKeyTime, &timeUs)); { Mutex::Autolock autoLock(mMiscStateLock); mVideoTimeUs = timeUs; } if (mSeeking) { if (mAudioPlayer != NULL) { Loading Loading @@ -1174,7 +1177,7 @@ void AwesomePlayer::onPrepareAsyncEvent() { prefetcher.clear(); if (result == OK) { LOGV("prefetcher is done preparing"); LOGI("prefetcher is done preparing"); } else { Mutex::Autolock autoLock(mLock); Loading Loading @@ -1231,7 +1234,7 @@ status_t AwesomePlayer::suspend() { state->mFileSource = mFileSource; state->mFlags = mFlags & (PLAYING | LOOPING | AT_EOS); getPosition_l(&state->mPositionUs); getPosition(&state->mPositionUs); if (mLastVideoBuffer) { size_t size = mLastVideoBuffer->range_length(); Loading media/libstagefright/include/AwesomePlayer.h +1 −1 Original line number Diff line number Diff line Loading @@ -98,6 +98,7 @@ private: }; mutable Mutex mLock; Mutex mMiscStateLock; OMXClient mClient; TimedEventQueue mQueue; Loading Loading @@ -155,7 +156,6 @@ private: void postBufferingEvent_l(); void postStreamDoneEvent_l(status_t status); void postCheckAudioStatusEvent_l(); status_t getPosition_l(int64_t *positionUs); status_t play_l(); MediaBuffer *mLastVideoBuffer; Loading Loading
media/libstagefright/AwesomePlayer.cpp +20 −17 Original line number Diff line number Diff line Loading @@ -423,21 +423,23 @@ void AwesomePlayer::onBufferingUpdate() { } mBufferingEventPending = false; if (mDurationUs >= 0) { int64_t durationUs; { Mutex::Autolock autoLock(mMiscStateLock); durationUs = mDurationUs; } if (durationUs >= 0) { int64_t cachedDurationUs = mPrefetcher->getCachedDurationUs(); LOGV("cache holds %.2f secs worth of data.", cachedDurationUs / 1E6); int64_t positionUs = 0; if (mVideoSource != NULL) { positionUs = mVideoTimeUs; } else if (mAudioPlayer != NULL) { positionUs = mAudioPlayer->getMediaTimeUs(); } int64_t positionUs; getPosition(&positionUs); cachedDurationUs += positionUs; double percentage = (double)cachedDurationUs / mDurationUs; double percentage = (double)cachedDurationUs / durationUs; notifyListener_l(MEDIA_BUFFERING_UPDATE, percentage * 100.0); postBufferingEvent_l(); Loading Loading @@ -653,7 +655,7 @@ status_t AwesomePlayer::setLooping(bool shouldLoop) { } status_t AwesomePlayer::getDuration(int64_t *durationUs) { Mutex::Autolock autoLock(mLock); Mutex::Autolock autoLock(mMiscStateLock); if (mDurationUs < 0) { return UNKNOWN_ERROR; Loading @@ -665,12 +667,8 @@ status_t AwesomePlayer::getDuration(int64_t *durationUs) { } status_t AwesomePlayer::getPosition(int64_t *positionUs) { Mutex::Autolock autoLock(mLock); return getPosition_l(positionUs); } status_t AwesomePlayer::getPosition_l(int64_t *positionUs) { if (mVideoSource != NULL) { Mutex::Autolock autoLock(mMiscStateLock); *positionUs = mVideoTimeUs; } else if (mAudioPlayer != NULL) { *positionUs = mAudioPlayer->getMediaTimeUs(); Loading Loading @@ -748,6 +746,7 @@ status_t AwesomePlayer::initAudioDecoder() { if (mAudioSource != NULL) { int64_t durationUs; if (mAudioTrack->getFormat()->findInt64(kKeyDuration, &durationUs)) { Mutex::Autolock autoLock(mMiscStateLock); if (mDurationUs < 0 || durationUs > mDurationUs) { mDurationUs = durationUs; } Loading Loading @@ -778,6 +777,7 @@ status_t AwesomePlayer::initVideoDecoder() { if (mVideoSource != NULL) { int64_t durationUs; if (mVideoTrack->getFormat()->findInt64(kKeyDuration, &durationUs)) { Mutex::Autolock autoLock(mMiscStateLock); if (mDurationUs < 0 || durationUs > mDurationUs) { mDurationUs = durationUs; } Loading Loading @@ -857,7 +857,10 @@ void AwesomePlayer::onVideoEvent() { int64_t timeUs; CHECK(mVideoBuffer->meta_data()->findInt64(kKeyTime, &timeUs)); { Mutex::Autolock autoLock(mMiscStateLock); mVideoTimeUs = timeUs; } if (mSeeking) { if (mAudioPlayer != NULL) { Loading Loading @@ -1174,7 +1177,7 @@ void AwesomePlayer::onPrepareAsyncEvent() { prefetcher.clear(); if (result == OK) { LOGV("prefetcher is done preparing"); LOGI("prefetcher is done preparing"); } else { Mutex::Autolock autoLock(mLock); Loading Loading @@ -1231,7 +1234,7 @@ status_t AwesomePlayer::suspend() { state->mFileSource = mFileSource; state->mFlags = mFlags & (PLAYING | LOOPING | AT_EOS); getPosition_l(&state->mPositionUs); getPosition(&state->mPositionUs); if (mLastVideoBuffer) { size_t size = mLastVideoBuffer->range_length(); Loading
media/libstagefright/include/AwesomePlayer.h +1 −1 Original line number Diff line number Diff line Loading @@ -98,6 +98,7 @@ private: }; mutable Mutex mLock; Mutex mMiscStateLock; OMXClient mClient; TimedEventQueue mQueue; Loading Loading @@ -155,7 +156,6 @@ private: void postBufferingEvent_l(); void postStreamDoneEvent_l(status_t status); void postCheckAudioStatusEvent_l(); status_t getPosition_l(int64_t *positionUs); status_t play_l(); MediaBuffer *mLastVideoBuffer; Loading