diff options
author | Andreas Huber <andih@google.com> | 2010-02-03 15:35:59 -0800 |
---|---|---|
committer | Andreas Huber <andih@google.com> | 2010-02-03 15:35:59 -0800 |
commit | 80a68deec52c9a1b47215ed68526206ec88197f8 (patch) | |
tree | 570e88d5d51a646b1f8980f9469d66dd2bf940c0 | |
parent | 1862a33b246249630b654182afb5914da3480d4c (diff) | |
download | frameworks_av-80a68deec52c9a1b47215ed68526206ec88197f8.zip frameworks_av-80a68deec52c9a1b47215ed68526206ec88197f8.tar.gz frameworks_av-80a68deec52c9a1b47215ed68526206ec88197f8.tar.bz2 |
Previous change broke A/V sync, this is a better change to eliminate negative media positions.
related-to-bug: 2414900
-rw-r--r-- | media/libstagefright/AudioPlayer.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/media/libstagefright/AudioPlayer.cpp b/media/libstagefright/AudioPlayer.cpp index 31157ce..e7351dc 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( |