summaryrefslogtreecommitdiffstats
path: root/services/audioflinger/Threads.cpp
diff options
context:
space:
mode:
authorEric Laurent <elaurent@google.com>2013-09-20 16:56:33 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2013-09-20 16:56:34 +0000
commita3b97ad288e6808c54c6275eaac1bd53108d8f11 (patch)
treeeb4ee28ecd01cf4a4548004e8a2d9154ce0f2c73 /services/audioflinger/Threads.cpp
parentfbb2609f132f23a983d376dec9ae6bfebfcacc4c (diff)
parentaccc147666bfd37fc8b4ef745f18a8c751555ec2 (diff)
downloadframeworks_av-a3b97ad288e6808c54c6275eaac1bd53108d8f11.zip
frameworks_av-a3b97ad288e6808c54c6275eaac1bd53108d8f11.tar.gz
frameworks_av-a3b97ad288e6808c54c6275eaac1bd53108d8f11.tar.bz2
Merge "audioflinger: implement getTimestamp() for offloaded tracks" into klp-dev
Diffstat (limited to 'services/audioflinger/Threads.cpp')
-rw-r--r--services/audioflinger/Threads.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/services/audioflinger/Threads.cpp b/services/audioflinger/Threads.cpp
index 9210330..5f36cab 100644
--- a/services/audioflinger/Threads.cpp
+++ b/services/audioflinger/Threads.cpp
@@ -2339,6 +2339,22 @@ void AudioFlinger::PlaybackThread::removeTracks_l(const Vector< sp<Track> >& tra
}
+status_t AudioFlinger::PlaybackThread::getTimestamp_l(AudioTimestamp& timestamp)
+{
+ if (mNormalSink != 0) {
+ return mNormalSink->getTimestamp(timestamp);
+ }
+ if (mType == OFFLOAD && mOutput->stream->get_presentation_position) {
+ uint64_t position64;
+ int ret = mOutput->stream->get_presentation_position(
+ mOutput->stream, &position64, &timestamp.mTime);
+ if (ret == 0) {
+ timestamp.mPosition = (uint32_t)position64;
+ return NO_ERROR;
+ }
+ }
+ return INVALID_OPERATION;
+}
// ----------------------------------------------------------------------------
AudioFlinger::MixerThread::MixerThread(const sp<AudioFlinger>& audioFlinger, AudioStreamOut* output,