From 9747b68530aa65b04751b43bf4ce3385b5d781f9 Mon Sep 17 00:00:00 2001 From: Lajos Molnar Date: Wed, 30 Apr 2014 11:10:00 -0700 Subject: AwesomePlayer: improve scheduling of video event to hit PTS Change-Id: I7b19911acbde9b592b757b952d4ad63cd8efebed --- media/libstagefright/AwesomePlayer.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'media/libstagefright') diff --git a/media/libstagefright/AwesomePlayer.cpp b/media/libstagefright/AwesomePlayer.cpp index 0dd867c..391392e 100644 --- a/media/libstagefright/AwesomePlayer.cpp +++ b/media/libstagefright/AwesomePlayer.cpp @@ -1944,8 +1944,9 @@ void AwesomePlayer::onVideoEvent() { } if (latenessUs < -10000) { - // We're more than 10ms early. - postVideoEvent_l(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); return; } } @@ -2009,7 +2010,10 @@ void AwesomePlayer::onVideoEvent() { int64_t nextTimeUs; CHECK(mVideoBuffer->meta_data()->findInt64(kKeyTime, &nextTimeUs)); int64_t delayUs = nextTimeUs - ts->getRealTimeUs() + mTimeSourceDeltaUs; - postVideoEvent_l(delayUs > 10000 ? 10000 : delayUs < 0 ? 0 : delayUs); + 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); return; } -- cgit v1.1