summaryrefslogtreecommitdiffstats
path: root/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp')
-rw-r--r--services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp33
1 files changed, 13 insertions, 20 deletions
diff --git a/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp b/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp
index 51af20b..96bc4c7 100644
--- a/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp
+++ b/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp
@@ -182,30 +182,12 @@ status_t AudioPolicyService::getOutputForAttr(const audio_attributes_t *attr,
}
if (audioPolicyEffects != 0) {
- addOutputSessionEffects(*output, *stream, session, flags, channelMask, uid);
+ audioPolicyEffects->doAddOutputSessionEffects(*output, *stream, session, flags, channelMask, uid);
}
return status;
}
-status_t AudioPolicyService::addOutputSessionEffects(audio_io_handle_t output,
- audio_stream_type_t stream,
- audio_session_t session,
- audio_output_flags_t flags,
- audio_channel_mask_t channelMask,
- uid_t uid)
-{
- if (uint32_t(stream) >= AUDIO_STREAM_CNT) {
- return BAD_VALUE;
- }
- if (mAudioPolicyManager == NULL) {
- return NO_INIT;
- }
- ALOGV("addOutputSessionEffects()");
- return mOutputCommandThread->addOutputSessionEffectsCommand(
- output, stream, session, flags, channelMask, uid);
-}
-
status_t AudioPolicyService::startOutput(audio_io_handle_t output,
audio_stream_type_t stream,
audio_session_t session)
@@ -231,8 +213,19 @@ status_t AudioPolicyService::doStartOutput(audio_io_handle_t output,
return NO_INIT;
}
ALOGV("doStartOutput()");
+ sp<AudioPolicyEffects>audioPolicyEffects;
+ {
+ Mutex::Autolock _l(mLock);
+ audioPolicyEffects = mAudioPolicyEffects;
+ }
+ if (audioPolicyEffects != 0) {
+ // create audio processors according to stream
+ status_t status = audioPolicyEffects->addOutputSessionEffects(output, stream, session);
+ if (status != NO_ERROR && status != ALREADY_EXISTS) {
+ ALOGW("Failed to add effects on session %d", session);
+ }
+ }
Mutex::Autolock _l(mLock);
-
return mAudioPolicyManager->startOutput(output, stream, session);
}