From c119f7ea23d7cffc5dcac49ec4c41a0c68290549 Mon Sep 17 00:00:00 2001 From: Andreas Huber Date: Wed, 3 Feb 2010 10:23:26 -0800 Subject: [PATCH] AudioPlayer didn't properly account for the latency when calculating the current media time. related-to-bug: 2414900 --- media/libstagefright/AudioPlayer.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/media/libstagefright/AudioPlayer.cpp b/media/libstagefright/AudioPlayer.cpp index efe7ebb641e3..01578c1a6009 100644 --- a/media/libstagefright/AudioPlayer.cpp +++ b/media/libstagefright/AudioPlayer.cpp @@ -249,7 +249,8 @@ void AudioPlayer::fillBuffer(void *data, size_t size) { kKeyTime, &mPositionTimeMediaUs)); mPositionTimeRealUs = - ((mNumFramesPlayed + size_done / mFrameSize) * 1000000) + -mLatencyUs + + ((mNumFramesPlayed + size_done / mFrameSize) * 1000000) / mSampleRate; LOGV("buffer->size() = %d, " @@ -297,6 +298,10 @@ int64_t AudioPlayer::getRealTimeUsLocked() const { int64_t AudioPlayer::getMediaTimeUs() { Mutex::Autolock autoLock(mLock); + if (mPositionTimeMediaUs < 0 || mPositionTimeRealUs < 0) { + return 0; + } + return mPositionTimeMediaUs + (getRealTimeUsLocked() - mPositionTimeRealUs); } @@ -307,7 +312,7 @@ bool AudioPlayer::getMediaTimeMapping( *realtime_us = mPositionTimeRealUs; *mediatime_us = mPositionTimeMediaUs; - return mPositionTimeRealUs != -1 || mPositionTimeMediaUs != -1; + return mPositionTimeRealUs != -1 && mPositionTimeMediaUs != -1; } status_t AudioPlayer::seekTo(int64_t time_us) { -- 2.11.0