summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Dong <jdong@google.com>2011-01-07 16:25:38 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-01-07 16:25:38 -0800
commit3f0c13538a5e36c040748051eddc0135e1813c0b (patch)
tree068da3e34ec519eb550abb96cd1a40d77ced0770
parent539802e782303d5918c0ab0d38f3b8a2e9830431 (diff)
parent28f939db9d4dee1e8b59459e4b722fd19f2930f9 (diff)
downloadframeworks_base-3f0c13538a5e36c040748051eddc0135e1813c0b.zip
frameworks_base-3f0c13538a5e36c040748051eddc0135e1813c0b.tar.gz
frameworks_base-3f0c13538a5e36c040748051eddc0135e1813c0b.tar.bz2
Merge "Awesomeplayer : Frame dropping logic change" into honeycomb
-rw-r--r--media/libstagefright/AwesomePlayer.cpp18
-rw-r--r--media/libstagefright/include/AwesomePlayer.h1
2 files changed, 13 insertions, 6 deletions
diff --git a/media/libstagefright/AwesomePlayer.cpp b/media/libstagefright/AwesomePlayer.cpp
index b350daf..914e409 100644
--- a/media/libstagefright/AwesomePlayer.cpp
+++ b/media/libstagefright/AwesomePlayer.cpp
@@ -52,6 +52,7 @@
#include "include/LiveSession.h"
#define USE_SURFACE_ALLOC 1
+#define FRAME_DROP_FREQ 7
namespace android {
@@ -1255,7 +1256,7 @@ void AwesomePlayer::onVideoEvent() {
if (mFlags & FIRST_FRAME) {
mFlags &= ~FIRST_FRAME;
-
+ mSinceLastDropped = 0;
mTimeSourceDeltaUs = ts->getRealTimeUs() - timeUs;
}
@@ -1283,12 +1284,16 @@ void AwesomePlayer::onVideoEvent() {
if (latenessUs > 40000) {
// We're more than 40ms late.
LOGV("we're late by %lld us (%.2f secs)", latenessUs, latenessUs / 1E6);
+ if ( mSinceLastDropped > FRAME_DROP_FREQ)
+ {
+ LOGV("we're late by %lld us (%.2f secs) dropping one after %d frames", latenessUs, latenessUs / 1E6, mSinceLastDropped);
+ mSinceLastDropped = 0;
+ mVideoBuffer->release();
+ mVideoBuffer = NULL;
- mVideoBuffer->release();
- mVideoBuffer = NULL;
-
- postVideoEvent_l();
- return;
+ postVideoEvent_l();
+ return;
+ }
}
if (latenessUs < -10000) {
@@ -1305,6 +1310,7 @@ void AwesomePlayer::onVideoEvent() {
}
if (mVideoRenderer != NULL) {
+ mSinceLastDropped++;
mVideoRenderer->render(mVideoBuffer);
}
diff --git a/media/libstagefright/include/AwesomePlayer.h b/media/libstagefright/include/AwesomePlayer.h
index 0c67432..17b83c1 100644
--- a/media/libstagefright/include/AwesomePlayer.h
+++ b/media/libstagefright/include/AwesomePlayer.h
@@ -151,6 +151,7 @@ private:
uint32_t mFlags;
uint32_t mExtractorFlags;
+ uint32_t mSinceLastDropped;
int64_t mTimeSourceDeltaUs;
int64_t mVideoTimeUs;