diff options
author | Eric Laurent <elaurent@google.com> | 2013-08-31 12:59:48 -0700 |
---|---|---|
committer | Eric Laurent <elaurent@google.com> | 2013-09-09 09:09:21 -0700 |
commit | 813e2a74853bde19e37d878c596a044b3f299efc (patch) | |
tree | b95aa8b59f49b4348b2112047ee80e572637d706 /services/audioflinger/Effects.cpp | |
parent | 84b7fb0c88ddd05ed7c148c82fe1691040a9404d (diff) | |
download | frameworks_av-813e2a74853bde19e37d878c596a044b3f299efc.zip frameworks_av-813e2a74853bde19e37d878c596a044b3f299efc.tar.gz frameworks_av-813e2a74853bde19e37d878c596a044b3f299efc.tar.bz2 |
audioflinger: no effects on offloaded tracks
Invalidate offloaded tracks when an effect is enabled
so that the track is recreated in PCM mode and the effect
can be applied.
This is temporary until effect offloading is implemented.
Bug: 8174034.
Change-Id: I77b8b54a10db6cb8334be76d863ea7e720eaad09
Diffstat (limited to 'services/audioflinger/Effects.cpp')
-rw-r--r-- | services/audioflinger/Effects.cpp | 34 |
1 files changed, 23 insertions, 11 deletions
diff --git a/services/audioflinger/Effects.cpp b/services/audioflinger/Effects.cpp index d5a21a7..86671a9 100644 --- a/services/audioflinger/Effects.cpp +++ b/services/audioflinger/Effects.cpp @@ -593,17 +593,6 @@ status_t AudioFlinger::EffectModule::setEnabled_l(bool enabled) h->setEnabled(enabled); } } -//EL_FIXME not sure why this is needed? -// sp<ThreadBase> thread = mThread.promote(); -// if (thread == 0) { -// return NO_ERROR; -// } -// -// if ((thread->type() == ThreadBase::OFFLOAD) && (enabled)) { -// PlaybackThread *p = (PlaybackThread *)thread.get(); -// ALOGV("setEnabled: Offload, invalidate tracks"); -// p->invalidateTracks(AUDIO_STREAM_MUSIC); -// } } return NO_ERROR; } @@ -942,6 +931,17 @@ status_t AudioFlinger::EffectHandle::enable() thread->checkSuspendOnEffectEnabled(mEffect, false, mEffect->sessionId()); } mEnabled = false; + } else { + //TODO: remove when effect offload is implemented + if (thread != 0) { + if ((thread->type() == ThreadBase::OFFLOAD)) { + PlaybackThread *t = (PlaybackThread *)thread.get(); + t->invalidateTracks(AUDIO_STREAM_MUSIC); + } + if (mEffect->sessionId() == AUDIO_SESSION_OUTPUT_MIX) { + thread->mAudioFlinger->onGlobalEffectEnable(); + } + } } return status; } @@ -1728,4 +1728,16 @@ void AudioFlinger::EffectChain::checkSuspendOnEffectEnabled(const sp<EffectModul } } +bool AudioFlinger::EffectChain::isEnabled() +{ + Mutex::Autolock _l(mLock); + size_t size = mEffects.size(); + for (size_t i = 0; i < size; i++) { + if (mEffects[i]->isEnabled()) { + return true; + } + } + return false; +} + }; // namespace android |