Loading include/media/stagefright/AudioPlayer.h +1 −0 Original line number Diff line number Diff line Loading @@ -100,6 +100,7 @@ private: bool mAllowDeepBuffering; // allow audio deep audio buffers. Helps with low power audio // playback but implies high latency AwesomePlayer *mObserver; int64_t mPinnedTimeUs; static void AudioCallback(int event, void *user, void *info); void AudioCallback(int event, void *info); Loading media/libstagefright/AudioPlayer.cpp +19 −2 Original line number Diff line number Diff line Loading @@ -54,7 +54,8 @@ AudioPlayer::AudioPlayer( mFirstBuffer(NULL), mAudioSink(audioSink), mAllowDeepBuffering(allowDeepBuffering), mObserver(observer) { mObserver(observer), mPinnedTimeUs(-1ll) { } AudioPlayer::~AudioPlayer() { Loading Loading @@ -187,6 +188,7 @@ status_t AudioPlayer::start(bool sourceAlreadyStarted) { } mStarted = true; mPinnedTimeUs = -1ll; return OK; } Loading @@ -209,6 +211,8 @@ void AudioPlayer::pause(bool playPendingSamples) { } else { mAudioTrack->pause(); } mPinnedTimeUs = ALooper::GetNowUs(); } } Loading Loading @@ -490,6 +494,12 @@ size_t AudioPlayer::fillBuffer(void *data, size_t size) { Mutex::Autolock autoLock(mLock); mNumFramesPlayed += size_done / mFrameSize; mNumFramesPlayedSysTimeUs = ALooper::GetNowUs(); if (mReachedEOS) { mPinnedTimeUs = mNumFramesPlayedSysTimeUs; } else { mPinnedTimeUs = -1ll; } } if (postEOS) { Loading @@ -516,7 +526,14 @@ int64_t AudioPlayer::getRealTimeUsLocked() const { // Compensate for large audio buffers, updates of mNumFramesPlayed // are less frequent, therefore to get a "smoother" notion of time we // compensate using system time. int64_t diffUs = ALooper::GetNowUs() - mNumFramesPlayedSysTimeUs; int64_t diffUs; if (mPinnedTimeUs >= 0ll) { diffUs = mPinnedTimeUs; } else { diffUs = ALooper::GetNowUs(); } diffUs -= mNumFramesPlayedSysTimeUs; return result + diffUs; } Loading Loading
include/media/stagefright/AudioPlayer.h +1 −0 Original line number Diff line number Diff line Loading @@ -100,6 +100,7 @@ private: bool mAllowDeepBuffering; // allow audio deep audio buffers. Helps with low power audio // playback but implies high latency AwesomePlayer *mObserver; int64_t mPinnedTimeUs; static void AudioCallback(int event, void *user, void *info); void AudioCallback(int event, void *info); Loading
media/libstagefright/AudioPlayer.cpp +19 −2 Original line number Diff line number Diff line Loading @@ -54,7 +54,8 @@ AudioPlayer::AudioPlayer( mFirstBuffer(NULL), mAudioSink(audioSink), mAllowDeepBuffering(allowDeepBuffering), mObserver(observer) { mObserver(observer), mPinnedTimeUs(-1ll) { } AudioPlayer::~AudioPlayer() { Loading Loading @@ -187,6 +188,7 @@ status_t AudioPlayer::start(bool sourceAlreadyStarted) { } mStarted = true; mPinnedTimeUs = -1ll; return OK; } Loading @@ -209,6 +211,8 @@ void AudioPlayer::pause(bool playPendingSamples) { } else { mAudioTrack->pause(); } mPinnedTimeUs = ALooper::GetNowUs(); } } Loading Loading @@ -490,6 +494,12 @@ size_t AudioPlayer::fillBuffer(void *data, size_t size) { Mutex::Autolock autoLock(mLock); mNumFramesPlayed += size_done / mFrameSize; mNumFramesPlayedSysTimeUs = ALooper::GetNowUs(); if (mReachedEOS) { mPinnedTimeUs = mNumFramesPlayedSysTimeUs; } else { mPinnedTimeUs = -1ll; } } if (postEOS) { Loading @@ -516,7 +526,14 @@ int64_t AudioPlayer::getRealTimeUsLocked() const { // Compensate for large audio buffers, updates of mNumFramesPlayed // are less frequent, therefore to get a "smoother" notion of time we // compensate using system time. int64_t diffUs = ALooper::GetNowUs() - mNumFramesPlayedSysTimeUs; int64_t diffUs; if (mPinnedTimeUs >= 0ll) { diffUs = mPinnedTimeUs; } else { diffUs = ALooper::GetNowUs(); } diffUs -= mNumFramesPlayedSysTimeUs; return result + diffUs; } Loading