diff options
| author | Linux Build Service Account <lnxbuild@localhost> | 2013-02-25 02:08:46 -0800 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2013-02-25 02:08:46 -0800 |
| commit | 71b29e12f18938213fab357e4be2f8cb5b29bbc6 (patch) | |
| tree | 55caee2df694ae2144191ef25d4a275023faea07 | |
| parent | c648e5b5744d84cefb6e5750d998eb90cb1bbf87 (diff) | |
| parent | fee8e6aebc87b398f0c58491f3f9bf105662a398 (diff) | |
| download | android_hardware_qcom_media-71b29e12f18938213fab357e4be2f8cb5b29bbc6.tar.gz android_hardware_qcom_media-71b29e12f18938213fab357e4be2f8cb5b29bbc6.tar.bz2 android_hardware_qcom_media-71b29e12f18938213fab357e4be2f8cb5b29bbc6.zip | |
Merge "dashplayer: Memoryleak fix and fps calculation during buffering"
| -rw-r--r-- | dashplayer/DashPlayer.cpp | 7 | ||||
| -rw-r--r-- | dashplayer/DashPlayerStats.cpp | 30 | ||||
| -rw-r--r-- | dashplayer/DashPlayerStats.h | 2 |
3 files changed, 30 insertions, 9 deletions
diff --git a/dashplayer/DashPlayer.cpp b/dashplayer/DashPlayer.cpp index 07c23b87..d55251f6 100644 --- a/dashplayer/DashPlayer.cpp +++ b/dashplayer/DashPlayer.cpp @@ -84,6 +84,10 @@ DashPlayer::~DashPlayer() { mStats->logFpsSummary(); mStats = NULL; } + if (mTrackName != NULL) { + delete[] mTrackName; + mTrackName = NULL; + } } void DashPlayer::setUID(uid_t uid) { @@ -859,6 +863,9 @@ void DashPlayer::onMessageReceived(const sp<AMessage> &msg) { ALOGE("Source Notified Buffering End for %s ",mTrackName); mBufferingNotification = false; notifyListener(MEDIA_INFO, MEDIA_INFO_BUFFERING_END, 0); + if(mStats != NULL) { + mStats->notifyBufferingEvent(); + } } else { ALOGE("No need to notify Buffering end as mBufferingNotification is (%d) " diff --git a/dashplayer/DashPlayerStats.cpp b/dashplayer/DashPlayerStats.cpp index 41f0be67..51715098 100644 --- a/dashplayer/DashPlayerStats.cpp +++ b/dashplayer/DashPlayerStats.cpp @@ -65,12 +65,14 @@ DashPlayerStats::DashPlayerStats() { mSeekPerformed = false; mTotalTime = 0; mFirstFrameTime = 0; + mTotalRenderingFrames = 0; + mBufferingEvent = false; } } DashPlayerStats::~DashPlayerStats() { if(mMIME) { - delete mMIME; + delete[] mMIME; } } @@ -78,8 +80,8 @@ void DashPlayerStats::setMime(const char* mime) { Mutex::Autolock autoLock(mStatsLock); if(mime != NULL) { int mimeLen = strlen(mime); - if(mMIME) { - delete mMIME; + if(mMIME) { + delete[] mMIME; } mMIME = new char[mimeLen+1]; @@ -98,6 +100,11 @@ void DashPlayerStats::notifySeek() { mSeekPerformed = true; } +void DashPlayerStats::notifyBufferingEvent() { + Mutex::Autolock autoLock(mStatsLock); + mBufferingEvent = true; +} + void DashPlayerStats::incrementTotalFrames() { Mutex::Autolock autoLock(mStatsLock); mTotalFrames++; @@ -179,15 +186,16 @@ void DashPlayerStats::logSyncLoss() { void DashPlayerStats::logFps() { if (mStatistics) { Mutex::Autolock autoLock(mStatsLock); + int64_t now = getTimeOfDayUs(); + if(mTotalRenderingFrames < 2){ - mLastFrameUs = getTimeOfDayUs(); - mFirstFrameTime = getTimeOfDayUs(); + mLastFrameUs = now; + mFirstFrameTime = now; } - mTotalTime = getTimeOfDayUs() - mFirstFrameTime; - int64_t now = getTimeOfDayUs(); + mTotalTime = now - mFirstFrameTime; int64_t diff = now - mLastFrameUs; - if (diff > 250000 && !mVeryFirstFrame) { + if (diff > 250000 && !mVeryFirstFrame && !mBufferingEvent) { double fps =((mTotalRenderingFrames - mLastFrame) * 1E6)/diff; if (mStatisticsFrames == 0) { fps =((mTotalRenderingFrames - mLastFrame - 1) * 1E6)/diff; @@ -205,8 +213,12 @@ void DashPlayerStats::logFps() { } else if(mVeryFirstFrame) { logFirstFrame(); ALOGW("setting first frame time"); - mLastFrameUs = getTimeOfDayUs(); + mLastFrameUs = now; + } else if(mBufferingEvent) { + mLastFrameUs = now; + mLastFrame = mTotalRenderingFrames; } + mBufferingEvent = false; } } diff --git a/dashplayer/DashPlayerStats.h b/dashplayer/DashPlayerStats.h index 2d0242c9..40205527 100644 --- a/dashplayer/DashPlayerStats.h +++ b/dashplayer/DashPlayerStats.h @@ -56,6 +56,7 @@ class DashPlayerStats : public RefBase { void logFpsSummary(); static int64_t getTimeOfDayUs(); void incrementTotalRenderingFrames(); + void notifyBufferingEvent(); private: void logFirstFrame(); @@ -85,6 +86,7 @@ class DashPlayerStats : public RefBase { int64_t mTotalTime; int64_t mFirstFrameTime; uint64_t mTotalRenderingFrames; + bool mBufferingEvent; }; } // namespace android |
