diff options
author | Andreas Huber <andih@google.com> | 2010-02-03 10:23:26 -0800 |
---|---|---|
committer | Andreas Huber <andih@google.com> | 2010-02-03 10:23:26 -0800 |
commit | ad6516d9247bd0a76a393810b041c3e4094f0e36 (patch) | |
tree | 9ddbeb15c8c205420a6deb72d1a8ea01c1db7f32 /media/libstagefright/AudioPlayer.cpp | |
parent | 7b7a83a6840d34ab39f1a3c8ab81946bb4404c14 (diff) | |
download | frameworks_av-ad6516d9247bd0a76a393810b041c3e4094f0e36.zip frameworks_av-ad6516d9247bd0a76a393810b041c3e4094f0e36.tar.gz frameworks_av-ad6516d9247bd0a76a393810b041c3e4094f0e36.tar.bz2 |
AudioPlayer didn't properly account for the latency when calculating the current media time.
related-to-bug: 2414900
Diffstat (limited to 'media/libstagefright/AudioPlayer.cpp')
-rw-r--r-- | media/libstagefright/AudioPlayer.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/media/libstagefright/AudioPlayer.cpp b/media/libstagefright/AudioPlayer.cpp index efe7ebb..01578c1 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) { |