summaryrefslogtreecommitdiffstats
path: root/services/audioflinger/Tracks.cpp
diff options
context:
space:
mode:
authorGlenn Kasten <gkasten@google.com>2013-08-29 17:12:45 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2013-08-29 17:12:45 -0700
commitf557872b594d15599bdb65efd91eb5adeb1d0840 (patch)
tree8df16a0c49bac71163035d11562e06bcc12a2490 /services/audioflinger/Tracks.cpp
parent30c296c153447f5c2bb5251928bf4d3c4e28e552 (diff)
parent908d3c09ca7f2ccb280aa5dc8d876099ff9a9d0f (diff)
downloadframeworks_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/Tracks.cpp')
-rw-r--r--services/audioflinger/Tracks.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/services/audioflinger/Tracks.cpp b/services/audioflinger/Tracks.cpp
index 392707b..690f1dd 100644
--- a/services/audioflinger/Tracks.cpp
+++ b/services/audioflinger/Tracks.cpp
@@ -733,7 +733,19 @@ status_t AudioFlinger::PlaybackThread::Track::getTimestamp(AudioTimestamp& times
}
Mutex::Autolock _l(thread->mLock);
PlaybackThread *playbackThread = (PlaybackThread *)thread.get();
- return INVALID_OPERATION;
+ if (!playbackThread->mLatchQValid) {
+ return INVALID_OPERATION;
+ }
+ uint32_t unpresentedFrames =
+ ((int64_t) playbackThread->mLatchQ.mUnpresentedFrames * mSampleRate) /
+ playbackThread->mSampleRate;
+ uint32_t framesWritten = mAudioTrackServerProxy->framesReleased();
+ if (framesWritten < unpresentedFrames) {
+ return INVALID_OPERATION;
+ }
+ timestamp.mPosition = framesWritten - unpresentedFrames;
+ timestamp.mTime = playbackThread->mLatchQ.mTimestamp.mTime;
+ return NO_ERROR;
}
status_t AudioFlinger::PlaybackThread::Track::attachAuxEffect(int EffectId)