diff options
author | Lajos Molnar <lajos@google.com> | 2014-05-02 18:10:24 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-05-02 18:10:24 +0000 |
commit | 33a610c4a79975eb585526195a7c8eae8177777b (patch) | |
tree | e47c535870d06533653c01d2d9b3253fe6c53608 /media/libstagefright/AwesomePlayer.cpp | |
parent | 344a1b9bb5cba14a0771c8b416466678aff3215f (diff) | |
parent | 63249d6ea560b2f29d3ee255951f527b01ecbac5 (diff) | |
download | frameworks_av-33a610c4a79975eb585526195a7c8eae8177777b.zip frameworks_av-33a610c4a79975eb585526195a7c8eae8177777b.tar.gz frameworks_av-33a610c4a79975eb585526195a7c8eae8177777b.tar.bz2 |
am 63249d6e: am bc4bf532: am b2314088: Merge "AwesomePlayer: use PTS for queueBuffer"
* commit '63249d6ea560b2f29d3ee255951f527b01ecbac5':
AwesomePlayer: use PTS for queueBuffer
Diffstat (limited to 'media/libstagefright/AwesomePlayer.cpp')
-rw-r--r-- | media/libstagefright/AwesomePlayer.cpp | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/media/libstagefright/AwesomePlayer.cpp b/media/libstagefright/AwesomePlayer.cpp index acfc651..8d3032b 100644 --- a/media/libstagefright/AwesomePlayer.cpp +++ b/media/libstagefright/AwesomePlayer.cpp @@ -1870,6 +1870,7 @@ void AwesomePlayer::onVideoEvent() { ((mFlags & AUDIO_AT_EOS) || !(mFlags & AUDIOPLAYER_STARTED)) ? &mSystemTimeSource : mTimeSource; int64_t systemTimeUs = mSystemTimeSource.getRealTimeUs(); + int64_t looperTimeUs = ALooper::GetNowUs(); if (mFlags & FIRST_FRAME) { modifyFlags(FIRST_FRAME, CLEAR); @@ -1900,12 +1901,13 @@ void AwesomePlayer::onVideoEvent() { } } + int64_t latenessUs = 0; if (wasSeeking == NO_SEEK) { // Let's display the first frame after seeking right away. int64_t nowUs = estimateRealTimeUs(ts, systemTimeUs) - mTimeSourceDeltaUs; - int64_t latenessUs = nowUs - timeUs; + latenessUs = nowUs - timeUs; ATRACE_INT("Video Lateness (ms)", latenessUs / 1E3); @@ -1959,10 +1961,9 @@ void AwesomePlayer::onVideoEvent() { } } - if (latenessUs < -10000) { - // We're more than 10ms early. Try to schedule at least 12ms - // early (to hit this same check), or just on time. - postVideoEvent_l(latenessUs < -22000 ? 10000 : -latenessUs); + if (latenessUs < -30000) { + // We're more than 30ms early, schedule at most 20 ms before time due + postVideoEvent_l(latenessUs < -60000 ? 30000 : -latenessUs - 20000); return; } } @@ -1976,6 +1977,8 @@ void AwesomePlayer::onVideoEvent() { if (mVideoRenderer != NULL) { mSinceLastDropped++; + mVideoBuffer->meta_data()->setInt64(kKeyTime, looperTimeUs - latenessUs); + mVideoRenderer->render(mVideoBuffer); if (!mVideoRenderingStarted) { mVideoRenderingStarted = true; @@ -2029,8 +2032,8 @@ void AwesomePlayer::onVideoEvent() { int64_t delayUs = nextTimeUs - estimateRealTimeUs(ts, systemTimeUs) + mTimeSourceDeltaUs; ATRACE_INT("Frame delta (ms)", (nextTimeUs - timeUs) / 1E3); ALOGV("next frame in %" PRId64, delayUs); - // try to schedule at least 12ms before due time, or just on time - postVideoEvent_l(delayUs > 22000 ? 10000 : delayUs < 0 ? 0 : delayUs); + // try to schedule 30ms before time due + postVideoEvent_l(delayUs > 60000 ? 30000 : (delayUs < 30000 ? 0 : delayUs - 30000)); return; } |