summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/AwesomePlayer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'media/libstagefright/AwesomePlayer.cpp')
-rw-r--r--media/libstagefright/AwesomePlayer.cpp58
1 files changed, 55 insertions, 3 deletions
diff --git a/media/libstagefright/AwesomePlayer.cpp b/media/libstagefright/AwesomePlayer.cpp
index c68b476..ad221d1 100644
--- a/media/libstagefright/AwesomePlayer.cpp
+++ b/media/libstagefright/AwesomePlayer.cpp
@@ -57,6 +57,9 @@
#include <media/stagefright/MediaSource.h>
#include <media/stagefright/MetaData.h>
#include <media/stagefright/OMXCodec.h>
+#ifdef QCOM_HARDWARE
+#include "include/QCUtilityClass.h"
+#endif
#include <gui/ISurfaceTexture.h>
#include <gui/SurfaceTextureClient.h>
@@ -255,6 +258,46 @@ AwesomePlayer::~AwesomePlayer() {
mClient.disconnect();
}
+void AwesomePlayer::printStats() {
+ char value[PROPERTY_VALUE_MAX];
+ property_get("persist.debug.sf.statistics", value, "0");
+ if (atoi(value) && mVideoSource != NULL) {
+ ALOGE("===========================\n"
+ " videoDimensions(%d x %d)\n"
+ " Total Video Frames Decoded(%lld)\n"
+ " Total Video Frames Rendered(%lld)\n"
+ " Total Playback Duration(%lld ms)\n"
+ " numVideoFramesDropped(%lld)\n"
+ " Average Frames Per Second(%.4f)\n"
+ " Last Seek To Time(%lld ms)\n"
+ " Last Paused Time(%lld ms)\n"
+ " First Frame Latency (%lld ms)\n"
+ " Number of times AV Sync Lost(%u)\n"
+ " Max Video Ahead Time Delta(%u)\n"
+ " Max Video Behind Time Delta(%u)\n"
+ " Max Time Sync Loss(%u)\n"
+ " EOS(%d)\n"
+ " PLAYING(%d)\n"
+ "===========================\n\n",
+ mStats.mVideoWidth,
+ mStats.mVideoHeight,
+ mStats.mNumVideoFramesDecoded,
+ mStats.mTotalFrames,
+ mStats.mTotalTimeUs/1000,
+ mStats.mNumVideoFramesDropped,
+ mStats.mTotalTimeUs > 0 ? ((double)(mStats.mTotalFrames)*1E6)/((double)mStats.mTotalTimeUs) : 0,
+ mStats.mLastSeekToTimeMs,
+ mStats.mLastPausedTimeMs,
+ mStats.mFirstFrameLatencyUs/1000,
+ mStats.mNumTimesSyncLoss,
+ -mStats.mMaxEarlyDelta/1000,
+ mStats.mMaxLateDelta/1000,
+ mStats.mMaxTimeSyncLoss/1000,
+ (mFlags & VIDEO_AT_EOS) > 0,
+ (mFlags & PLAYING) > 0);
+ }
+}
+
void AwesomePlayer::cancelPlayerEvents(bool keepNotifications) {
mQueue.cancelEvent(mVideoEvent->eventID());
mVideoEventPending = false;
@@ -448,7 +491,11 @@ status_t AwesomePlayer::setDataSource_l(const sp<MediaExtractor> &extractor) {
&mStats.mTracks.editItemAt(mStats.mVideoTrackIndex);
stat->mMIME = mime.string();
}
- } else if (!haveAudio && !strncasecmp(mime.string(), "audio/", 6)) {
+ } else if (!haveAudio &&
+#ifdef QCOM_HARDWARE
+ !QCUtilityClass::helper_Awesomeplayer_checkIfAudioDisable() &&
+#endif
+ !strncasecmp(mime.string(), "audio/", 6)) {
setAudioSource(extractor->getTrack(i));
haveAudio = true;
mActiveAudioTrackIndex = i;
@@ -573,6 +620,8 @@ void AwesomePlayer::reset_l() {
mVideoRenderer.clear();
+ modifyFlags(PLAYING, CLEAR);
+ printStats();
if (mVideoSource != NULL) {
shutdownVideoDecoder_l();
}
@@ -1039,7 +1088,7 @@ status_t AwesomePlayer::play_l() {
// We don't want to post an error notification at this point,
// the error returned from MediaPlayer::start() will suffice.
bool sendErrorNotification = false;
-#ifdef IS_TUNNEL_MODE
+#ifdef USE_TUNNEL_MODE
if(mIsTunnelAudio) {
// For tunnel Audio error has to be posted to the client
sendErrorNotification = true;
@@ -1080,6 +1129,7 @@ status_t AwesomePlayer::play_l() {
if (mAudioSource != NULL && mVideoSource != NULL) {
postVideoLagEvent_l();
}
+ printStats();
}
if (mFlags & AT_EOS) {
@@ -1296,9 +1346,10 @@ status_t AwesomePlayer::pause_l(bool at_eos) {
Playback::PAUSE, 0);
}
- if(!(mFlags & AT_EOS)){
+ if(!(mFlags & VIDEO_AT_EOS)){
Mutex::Autolock autoLock(mStatsLock);
mStats.mLastPausedTimeMs = mVideoTimeUs/1000;
+ printStats();
}
uint32_t params = IMediaPlayerService::kBatteryDataTrackDecoder;
@@ -1832,6 +1883,7 @@ void AwesomePlayer::finishSeekIfNecessary(int64_t videoTimeUs) {
mStats.mLastSeekToTimeMs = mSeekTimeUs/1000;
logFirstFrame();
}
+ printStats();
}
void AwesomePlayer::onVideoEvent() {