diff options
Diffstat (limited to 'services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp')
-rw-r--r-- | services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp | 33 |
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); } |