diff options
author | Glenn Kasten <gkasten@google.com> | 2013-08-29 17:12:45 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2013-08-29 17:12:45 -0700 |
commit | f557872b594d15599bdb65efd91eb5adeb1d0840 (patch) | |
tree | 8df16a0c49bac71163035d11562e06bcc12a2490 /services/audioflinger/Threads.cpp | |
parent | 30c296c153447f5c2bb5251928bf4d3c4e28e552 (diff) | |
parent | 908d3c09ca7f2ccb280aa5dc8d876099ff9a9d0f (diff) | |
download | frameworks_av-f557872b594d15599bdb65efd91eb5adeb1d0840.zip frameworks_av-f557872b594d15599bdb65efd91eb5adeb1d0840.tar.gz frameworks_av-f557872b594d15599bdb65efd91eb5adeb1d0840.tar.bz2 |
am 908d3c09: am 51ec03c2: Merge "Implement Track::getTimestamp()" into klp-dev
* commit '908d3c09ca7f2ccb280aa5dc8d876099ff9a9d0f':
Implement Track::getTimestamp()
Diffstat (limited to 'services/audioflinger/Threads.cpp')
-rw-r--r-- | services/audioflinger/Threads.cpp | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/services/audioflinger/Threads.cpp b/services/audioflinger/Threads.cpp index 8bc70ba..99d0ac2 100644 --- a/services/audioflinger/Threads.cpp +++ b/services/audioflinger/Threads.cpp @@ -958,7 +958,9 @@ AudioFlinger::PlaybackThread::PlaybackThread(const sp<AudioFlinger>& audioFlinge mDraining(false), mScreenState(AudioFlinger::mScreenState), // index 0 is reserved for normal mixer's submix - mFastTrackAvailMask(((1 << FastMixerState::kMaxFastTracks) - 1) & ~1) + mFastTrackAvailMask(((1 << FastMixerState::kMaxFastTracks) - 1) & ~1), + // mLatchD, mLatchQ, + mLatchDValid(false), mLatchQValid(false) { snprintf(mName, kNameLength, "AudioOut_%X", id); mNBLogWriter = audioFlinger->newWriter_l(kLogSize, mName); @@ -1826,6 +1828,14 @@ ssize_t AudioFlinger::PlaybackThread::threadLoop_write() } else { bytesWritten = framesWritten; } + status_t status = INVALID_OPERATION; // mLatchD.mTimestamp is invalid + if (status == NO_ERROR) { + size_t totalFramesWritten = mNormalSink->framesWritten(); + if (totalFramesWritten >= mLatchD.mTimestamp.mPosition) { + mLatchD.mUnpresentedFrames = totalFramesWritten - mLatchD.mTimestamp.mPosition; + mLatchDValid = true; + } + } // otherwise use the HAL / AudioStreamOut directly } else { // Direct output and offload threads @@ -2104,6 +2114,12 @@ bool AudioFlinger::PlaybackThread::threadLoop() logString = NULL; } + if (mLatchDValid) { + mLatchQ = mLatchD; + mLatchDValid = false; + mLatchQValid = true; + } + if (checkForNewParameters_l()) { cacheParameters_l(); } |