From 065f69ef53f88bd0dcdb36e543c9d1cae1d6b628 Mon Sep 17 00:00:00 2001 From: Andreas Huber Date: Wed, 3 Feb 2010 15:35:59 -0800 Subject: [PATCH] Previous change broke A/V sync, this is a better change to eliminate negative media positions. related-to-bug: 2414900 --- media/libstagefright/AudioPlayer.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/media/libstagefright/AudioPlayer.cpp b/media/libstagefright/AudioPlayer.cpp index 31157ceae5a88..e7351dcbf9264 100644 --- a/media/libstagefright/AudioPlayer.cpp +++ b/media/libstagefright/AudioPlayer.cpp @@ -252,8 +252,7 @@ void AudioPlayer::fillBuffer(void *data, size_t size) { kKeyTime, &mPositionTimeMediaUs)); mPositionTimeRealUs = - -mLatencyUs - + ((mNumFramesPlayed + size_done / mFrameSize) * 1000000) + ((mNumFramesPlayed + size_done / mFrameSize) * 1000000) / mSampleRate; LOGV("buffer->size() = %d, " @@ -305,7 +304,12 @@ int64_t AudioPlayer::getMediaTimeUs() { return 0; } - return mPositionTimeMediaUs + (getRealTimeUsLocked() - mPositionTimeRealUs); + int64_t realTimeOffset = getRealTimeUsLocked() - mPositionTimeRealUs; + if (realTimeOffset < 0) { + realTimeOffset = 0; + } + + return mPositionTimeMediaUs + realTimeOffset; } bool AudioPlayer::getMediaTimeMapping(