summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/AudioPlayer.cpp
diff options
context:
space:
mode:
authorAndreas Huber <andih@google.com>2010-02-03 15:35:59 -0800
committerAndreas Huber <andih@google.com>2010-02-03 15:35:59 -0800
commit80a68deec52c9a1b47215ed68526206ec88197f8 (patch)
tree570e88d5d51a646b1f8980f9469d66dd2bf940c0 /media/libstagefright/AudioPlayer.cpp
parent1862a33b246249630b654182afb5914da3480d4c (diff)
downloadframeworks_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
Diffstat (limited to 'media/libstagefright/AudioPlayer.cpp')
-rw-r--r--media/libstagefright/AudioPlayer.cpp10
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(