diff options
author | Andreas Huber <andih@google.com> | 2011-09-16 15:09:22 -0700 |
---|---|---|
committer | Andreas Huber <andih@google.com> | 2011-09-16 15:19:59 -0700 |
commit | 3fe62150fa3dd6d25cb84aad80bc9e27ddd16c45 (patch) | |
tree | 4d969afd449d31381899275bf9b9fa2a87f9a24e /media/libmediaplayerservice/nuplayer/NuPlayerDriver.cpp | |
parent | 078cfcf7cce9185ec7559910d08b0bc02bfc88a3 (diff) | |
download | frameworks_av-3fe62150fa3dd6d25cb84aad80bc9e27ddd16c45.zip frameworks_av-3fe62150fa3dd6d25cb84aad80bc9e27ddd16c45.tar.gz frameworks_av-3fe62150fa3dd6d25cb84aad80bc9e27ddd16c45.tar.bz2 |
In order to recover from video lagging behind audio, drop avc frames
that are not referenced by other frames before feeding them into the decoder.
Change-Id: I822190af8f8329567bff8da1ea23136d0a765481
Diffstat (limited to 'media/libmediaplayerservice/nuplayer/NuPlayerDriver.cpp')
-rw-r--r-- | media/libmediaplayerservice/nuplayer/NuPlayerDriver.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerDriver.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerDriver.cpp index c6fca2c..b1e917d 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayerDriver.cpp +++ b/media/libmediaplayerservice/nuplayer/NuPlayerDriver.cpp @@ -31,6 +31,8 @@ NuPlayerDriver::NuPlayerDriver() : mResetInProgress(false), mDurationUs(-1), mPositionUs(-1), + mNumFramesTotal(0), + mNumFramesDropped(0), mLooper(new ALooper), mState(UNINITIALIZED), mStartupSeekTimeUs(-1) { @@ -292,4 +294,30 @@ void NuPlayerDriver::notifySeekComplete() { sendEvent(MEDIA_SEEK_COMPLETE); } +void NuPlayerDriver::notifyFrameStats( + int64_t numFramesTotal, int64_t numFramesDropped) { + Mutex::Autolock autoLock(mLock); + mNumFramesTotal = numFramesTotal; + mNumFramesDropped = numFramesDropped; +} + +status_t NuPlayerDriver::dump(int fd, const Vector<String16> &args) const { + Mutex::Autolock autoLock(mLock); + + FILE *out = fdopen(dup(fd), "w"); + + fprintf(out, " NuPlayer\n"); + fprintf(out, " numFramesTotal(%lld), numFramesDropped(%lld), " + "percentageDropped(%.2f)\n", + mNumFramesTotal, + mNumFramesDropped, + mNumFramesTotal == 0 + ? 0.0 : (double)mNumFramesDropped / mNumFramesTotal); + + fclose(out); + out = NULL; + + return OK; +} + } // namespace android |