diff options
author | TreeHugger Robot <treehugger-gerrit@google.com> | 2019-04-09 19:07:01 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2019-04-09 19:07:01 +0000 |
commit | 4b99b0dc3d4bc5700f276f59fc3a5da4dc90a108 (patch) | |
tree | fee1bf6b404352b1135fbb17e9f6987d1580aab5 /services/audioflinger/Threads.cpp | |
parent | e313cff42defff96ac2d94da50213e6df1b97c06 (diff) | |
parent | 47affe5c842bdab14d5889d7a12da74b9ac97eb5 (diff) | |
download | frameworks_av-4b99b0dc3d4bc5700f276f59fc3a5da4dc90a108.tar.gz frameworks_av-4b99b0dc3d4bc5700f276f59fc3a5da4dc90a108.tar.bz2 frameworks_av-4b99b0dc3d4bc5700f276f59fc3a5da4dc90a108.zip |
Merge "Copy haptic data directly from effect in buffer to out buffer." into qt-dev
Diffstat (limited to 'services/audioflinger/Threads.cpp')
-rw-r--r-- | services/audioflinger/Threads.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/services/audioflinger/Threads.cpp b/services/audioflinger/Threads.cpp index 0b203c42f6..0bb2213798 100644 --- a/services/audioflinger/Threads.cpp +++ b/services/audioflinger/Threads.cpp @@ -3610,8 +3610,30 @@ bool AudioFlinger::PlaybackThread::threadLoop() // only process effects if we're going to write if (mSleepTimeUs == 0 && mType != OFFLOAD) { + audio_session_t activeHapticId = AUDIO_SESSION_NONE; + if (mHapticChannelCount > 0 && effectChains.size() > 0) { + for (auto track : mActiveTracks) { + if (track->getHapticPlaybackEnabled()) { + activeHapticId = track->sessionId(); + break; + } + } + } for (size_t i = 0; i < effectChains.size(); i ++) { effectChains[i]->process_l(); + // TODO: Write haptic data directly to sink buffer when mixing. + if (activeHapticId != AUDIO_SESSION_NONE + && activeHapticId == effectChains[i]->sessionId()) { + // Haptic data is active in this case, copy it directly from + // in buffer to out buffer. + const size_t audioBufferSize = mNormalFrameCount + * audio_bytes_per_frame(mChannelCount, EFFECT_BUFFER_FORMAT); + memcpy_by_audio_format( + (uint8_t*)effectChains[i]->outBuffer() + audioBufferSize, + EFFECT_BUFFER_FORMAT, + (const uint8_t*)effectChains[i]->inBuffer() + audioBufferSize, + EFFECT_BUFFER_FORMAT, mNormalFrameCount * mHapticChannelCount); + } } } } |