diff options
author | James Dong <jdong@google.com> | 2011-01-07 16:25:38 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-01-07 16:25:38 -0800 |
commit | 3f0c13538a5e36c040748051eddc0135e1813c0b (patch) | |
tree | 068da3e34ec519eb550abb96cd1a40d77ced0770 | |
parent | 539802e782303d5918c0ab0d38f3b8a2e9830431 (diff) | |
parent | 28f939db9d4dee1e8b59459e4b722fd19f2930f9 (diff) | |
download | frameworks_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.cpp | 18 | ||||
-rw-r--r-- | media/libstagefright/include/AwesomePlayer.h | 1 |
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; |