Loading media/libmediaplayerservice/nuplayer/NuPlayer.cpp +35 −0 Original line number Diff line number Diff line Loading @@ -1311,6 +1311,7 @@ void NuPlayer::onMessageReceived(const sp<AMessage> &msg) { mResetting = true; stopPlaybackTimer("kWhatReset"); stopRebufferingTimer(true); mDeferredActions.push_back( new FlushDecoderAction( Loading Loading @@ -1604,6 +1605,37 @@ void NuPlayer::stopPlaybackTimer(const char *where) { } } void NuPlayer::startRebufferingTimer() { Mutex::Autolock autoLock(mPlayingTimeLock); if (mLastStartedRebufferingTimeNs == 0) { mLastStartedRebufferingTimeNs = systemTime(); ALOGV("startRebufferingTimer() time %20" PRId64 "", mLastStartedRebufferingTimeNs); } } void NuPlayer::stopRebufferingTimer(bool exitingPlayback) { Mutex::Autolock autoLock(mPlayingTimeLock); ALOGV("stopRebufferTimer() time %20" PRId64 " (exiting %d)", mLastStartedRebufferingTimeNs, exitingPlayback); if (mLastStartedRebufferingTimeNs != 0) { sp<NuPlayerDriver> driver = mDriver.promote(); if (driver != NULL) { int64_t now = systemTime(); int64_t rebuffered = now - mLastStartedRebufferingTimeNs; ALOGV("stopRebufferingTimer() log %20" PRId64 "", rebuffered); if (rebuffered > 0) { driver->notifyMoreRebufferingTimeUs((rebuffered+500)/1000); if (exitingPlayback) { driver->notifyRebufferingWhenExit(true); } } } mLastStartedRebufferingTimeNs = 0; } } void NuPlayer::onPause() { stopPlaybackTimer("onPause"); Loading Loading @@ -2250,6 +2282,7 @@ void NuPlayer::performReset() { CHECK(mVideoDecoder == NULL); stopPlaybackTimer("performReset"); stopRebufferingTimer(true); cancelPollDuration(); Loading Loading @@ -2503,6 +2536,7 @@ void NuPlayer::onSourceNotify(const sp<AMessage> &msg) { if (mStarted) { ALOGI("buffer low, pausing..."); startRebufferingTimer(); mPausedForBuffering = true; onPause(); } Loading @@ -2516,6 +2550,7 @@ void NuPlayer::onSourceNotify(const sp<AMessage> &msg) { if (mStarted) { ALOGI("buffer ready, resuming..."); stopRebufferingTimer(false); mPausedForBuffering = false; // do not resume yet if client didn't unpause Loading media/libmediaplayerservice/nuplayer/NuPlayer.h +4 −0 Original line number Diff line number Diff line Loading @@ -183,6 +183,10 @@ private: void stopPlaybackTimer(const char *where); void startPlaybackTimer(const char *where); int64_t mLastStartedRebufferingTimeNs; void startRebufferingTimer(); void stopRebufferingTimer(bool exitingPlayback); int64_t mPreviousSeekTimeUs; List<sp<Action> > mDeferredActions; Loading media/libmediaplayerservice/nuplayer/NuPlayerDriver.cpp +27 −0 Original line number Diff line number Diff line Loading @@ -56,6 +56,10 @@ static const char *kPlayerPlaying = "android.media.mediaplayer.playingMs"; static const char *kPlayerError = "android.media.mediaplayer.err"; static const char *kPlayerErrorCode = "android.media.mediaplayer.errcode"; static const char *kPlayerDataSourceType = "android.media.mediaplayer.dataSource"; // static const char *kPlayerRebuffering = "android.media.mediaplayer.rebufferingMs"; static const char *kPlayerRebufferingCount = "android.media.mediaplayer.rebuffers"; static const char *kPlayerRebufferingAtExit = "android.media.mediaplayer.rebufferExit"; NuPlayerDriver::NuPlayerDriver(pid_t pid) Loading @@ -67,6 +71,9 @@ NuPlayerDriver::NuPlayerDriver(pid_t pid) mPositionUs(-1), mSeekInProgress(false), mPlayingTimeUs(0), mRebufferingTimeUs(0), mRebufferingEvents(0), mRebufferingAtExit(false), mLooper(new ALooper), mMediaClock(new MediaClock), mPlayer(new NuPlayer(pid, mMediaClock)), Loading Loading @@ -582,6 +589,12 @@ void NuPlayerDriver::updateMetrics(const char *where) { mAnalyticsItem->setInt64(kPlayerPlaying, (mPlayingTimeUs+500)/1000 ); if (mRebufferingEvents != 0) { mAnalyticsItem->setInt64(kPlayerRebuffering, (mRebufferingTimeUs+500)/1000 ); mAnalyticsItem->setInt32(kPlayerRebufferingCount, mRebufferingEvents); mAnalyticsItem->setInt32(kPlayerRebufferingAtExit, mRebufferingAtExit); } mAnalyticsItem->setCString(kPlayerDataSourceType, mPlayer->getDataSourceType()); } Loading Loading @@ -661,6 +674,9 @@ status_t NuPlayerDriver::reset() { mPositionUs = -1; mLooping = false; mPlayingTimeUs = 0; mRebufferingTimeUs = 0; mRebufferingEvents = 0; mRebufferingAtExit = false; return OK; } Loading Loading @@ -811,6 +827,17 @@ void NuPlayerDriver::notifyMorePlayingTimeUs(int64_t playingUs) { mPlayingTimeUs += playingUs; } void NuPlayerDriver::notifyMoreRebufferingTimeUs(int64_t rebufferingUs) { Mutex::Autolock autoLock(mLock); mRebufferingTimeUs += rebufferingUs; mRebufferingEvents++; } void NuPlayerDriver::notifyRebufferingWhenExit(bool status) { Mutex::Autolock autoLock(mLock); mRebufferingAtExit = status; } void NuPlayerDriver::notifySeekComplete() { ALOGV("notifySeekComplete(%p)", this); Mutex::Autolock autoLock(mLock); Loading media/libmediaplayerservice/nuplayer/NuPlayerDriver.h +5 −0 Original line number Diff line number Diff line Loading @@ -84,6 +84,8 @@ struct NuPlayerDriver : public MediaPlayerInterface { void notifySetSurfaceComplete(); void notifyDuration(int64_t durationUs); void notifyMorePlayingTimeUs(int64_t timeUs); void notifyMoreRebufferingTimeUs(int64_t timeUs); void notifyRebufferingWhenExit(bool status); void notifySeekComplete(); void notifySeekComplete_l(); void notifyListener(int msg, int ext1 = 0, int ext2 = 0, const Parcel *in = NULL); Loading Loading @@ -126,6 +128,9 @@ private: int64_t mPositionUs; bool mSeekInProgress; int64_t mPlayingTimeUs; int64_t mRebufferingTimeUs; int32_t mRebufferingEvents; bool mRebufferingAtExit; // <<< sp<ALooper> mLooper; Loading Loading
media/libmediaplayerservice/nuplayer/NuPlayer.cpp +35 −0 Original line number Diff line number Diff line Loading @@ -1311,6 +1311,7 @@ void NuPlayer::onMessageReceived(const sp<AMessage> &msg) { mResetting = true; stopPlaybackTimer("kWhatReset"); stopRebufferingTimer(true); mDeferredActions.push_back( new FlushDecoderAction( Loading Loading @@ -1604,6 +1605,37 @@ void NuPlayer::stopPlaybackTimer(const char *where) { } } void NuPlayer::startRebufferingTimer() { Mutex::Autolock autoLock(mPlayingTimeLock); if (mLastStartedRebufferingTimeNs == 0) { mLastStartedRebufferingTimeNs = systemTime(); ALOGV("startRebufferingTimer() time %20" PRId64 "", mLastStartedRebufferingTimeNs); } } void NuPlayer::stopRebufferingTimer(bool exitingPlayback) { Mutex::Autolock autoLock(mPlayingTimeLock); ALOGV("stopRebufferTimer() time %20" PRId64 " (exiting %d)", mLastStartedRebufferingTimeNs, exitingPlayback); if (mLastStartedRebufferingTimeNs != 0) { sp<NuPlayerDriver> driver = mDriver.promote(); if (driver != NULL) { int64_t now = systemTime(); int64_t rebuffered = now - mLastStartedRebufferingTimeNs; ALOGV("stopRebufferingTimer() log %20" PRId64 "", rebuffered); if (rebuffered > 0) { driver->notifyMoreRebufferingTimeUs((rebuffered+500)/1000); if (exitingPlayback) { driver->notifyRebufferingWhenExit(true); } } } mLastStartedRebufferingTimeNs = 0; } } void NuPlayer::onPause() { stopPlaybackTimer("onPause"); Loading Loading @@ -2250,6 +2282,7 @@ void NuPlayer::performReset() { CHECK(mVideoDecoder == NULL); stopPlaybackTimer("performReset"); stopRebufferingTimer(true); cancelPollDuration(); Loading Loading @@ -2503,6 +2536,7 @@ void NuPlayer::onSourceNotify(const sp<AMessage> &msg) { if (mStarted) { ALOGI("buffer low, pausing..."); startRebufferingTimer(); mPausedForBuffering = true; onPause(); } Loading @@ -2516,6 +2550,7 @@ void NuPlayer::onSourceNotify(const sp<AMessage> &msg) { if (mStarted) { ALOGI("buffer ready, resuming..."); stopRebufferingTimer(false); mPausedForBuffering = false; // do not resume yet if client didn't unpause Loading
media/libmediaplayerservice/nuplayer/NuPlayer.h +4 −0 Original line number Diff line number Diff line Loading @@ -183,6 +183,10 @@ private: void stopPlaybackTimer(const char *where); void startPlaybackTimer(const char *where); int64_t mLastStartedRebufferingTimeNs; void startRebufferingTimer(); void stopRebufferingTimer(bool exitingPlayback); int64_t mPreviousSeekTimeUs; List<sp<Action> > mDeferredActions; Loading
media/libmediaplayerservice/nuplayer/NuPlayerDriver.cpp +27 −0 Original line number Diff line number Diff line Loading @@ -56,6 +56,10 @@ static const char *kPlayerPlaying = "android.media.mediaplayer.playingMs"; static const char *kPlayerError = "android.media.mediaplayer.err"; static const char *kPlayerErrorCode = "android.media.mediaplayer.errcode"; static const char *kPlayerDataSourceType = "android.media.mediaplayer.dataSource"; // static const char *kPlayerRebuffering = "android.media.mediaplayer.rebufferingMs"; static const char *kPlayerRebufferingCount = "android.media.mediaplayer.rebuffers"; static const char *kPlayerRebufferingAtExit = "android.media.mediaplayer.rebufferExit"; NuPlayerDriver::NuPlayerDriver(pid_t pid) Loading @@ -67,6 +71,9 @@ NuPlayerDriver::NuPlayerDriver(pid_t pid) mPositionUs(-1), mSeekInProgress(false), mPlayingTimeUs(0), mRebufferingTimeUs(0), mRebufferingEvents(0), mRebufferingAtExit(false), mLooper(new ALooper), mMediaClock(new MediaClock), mPlayer(new NuPlayer(pid, mMediaClock)), Loading Loading @@ -582,6 +589,12 @@ void NuPlayerDriver::updateMetrics(const char *where) { mAnalyticsItem->setInt64(kPlayerPlaying, (mPlayingTimeUs+500)/1000 ); if (mRebufferingEvents != 0) { mAnalyticsItem->setInt64(kPlayerRebuffering, (mRebufferingTimeUs+500)/1000 ); mAnalyticsItem->setInt32(kPlayerRebufferingCount, mRebufferingEvents); mAnalyticsItem->setInt32(kPlayerRebufferingAtExit, mRebufferingAtExit); } mAnalyticsItem->setCString(kPlayerDataSourceType, mPlayer->getDataSourceType()); } Loading Loading @@ -661,6 +674,9 @@ status_t NuPlayerDriver::reset() { mPositionUs = -1; mLooping = false; mPlayingTimeUs = 0; mRebufferingTimeUs = 0; mRebufferingEvents = 0; mRebufferingAtExit = false; return OK; } Loading Loading @@ -811,6 +827,17 @@ void NuPlayerDriver::notifyMorePlayingTimeUs(int64_t playingUs) { mPlayingTimeUs += playingUs; } void NuPlayerDriver::notifyMoreRebufferingTimeUs(int64_t rebufferingUs) { Mutex::Autolock autoLock(mLock); mRebufferingTimeUs += rebufferingUs; mRebufferingEvents++; } void NuPlayerDriver::notifyRebufferingWhenExit(bool status) { Mutex::Autolock autoLock(mLock); mRebufferingAtExit = status; } void NuPlayerDriver::notifySeekComplete() { ALOGV("notifySeekComplete(%p)", this); Mutex::Autolock autoLock(mLock); Loading
media/libmediaplayerservice/nuplayer/NuPlayerDriver.h +5 −0 Original line number Diff line number Diff line Loading @@ -84,6 +84,8 @@ struct NuPlayerDriver : public MediaPlayerInterface { void notifySetSurfaceComplete(); void notifyDuration(int64_t durationUs); void notifyMorePlayingTimeUs(int64_t timeUs); void notifyMoreRebufferingTimeUs(int64_t timeUs); void notifyRebufferingWhenExit(bool status); void notifySeekComplete(); void notifySeekComplete_l(); void notifyListener(int msg, int ext1 = 0, int ext2 = 0, const Parcel *in = NULL); Loading Loading @@ -126,6 +128,9 @@ private: int64_t mPositionUs; bool mSeekInProgress; int64_t mPlayingTimeUs; int64_t mRebufferingTimeUs; int32_t mRebufferingEvents; bool mRebufferingAtExit; // <<< sp<ALooper> mLooper; Loading