summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2013-02-25 02:08:46 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2013-02-25 02:08:46 -0800
commit71b29e12f18938213fab357e4be2f8cb5b29bbc6 (patch)
tree55caee2df694ae2144191ef25d4a275023faea07
parentc648e5b5744d84cefb6e5750d998eb90cb1bbf87 (diff)
parentfee8e6aebc87b398f0c58491f3f9bf105662a398 (diff)
downloadandroid_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.cpp7
-rw-r--r--dashplayer/DashPlayerStats.cpp30
-rw-r--r--dashplayer/DashPlayerStats.h2
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