From 489c9fb62f02e1d23d6d6c89b22f7d19c596e65e Mon Sep 17 00:00:00 2001 From: Steve Kondik Date: Fri, 15 Apr 2016 01:21:35 -0700 Subject: audiopolicy: Update legacy policy for session callbacks Change-Id: Id6f24195721a48dc5a0d3a7ff7fbee2bd8614128 --- .../service/AudioPolicyInterfaceImplLegacy.cpp | 38 +++++++++++++++------- 1 file changed, 26 insertions(+), 12 deletions(-) (limited to 'services/audiopolicy/service') diff --git a/services/audiopolicy/service/AudioPolicyInterfaceImplLegacy.cpp b/services/audiopolicy/service/AudioPolicyInterfaceImplLegacy.cpp index 318c6d2..e3d69ba 100644 --- a/services/audiopolicy/service/AudioPolicyInterfaceImplLegacy.cpp +++ b/services/audiopolicy/service/AudioPolicyInterfaceImplLegacy.cpp @@ -147,6 +147,24 @@ audio_io_handle_t AudioPolicyService::getOutput(audio_stream_type_t stream, format, channelMask, flags, offloadInfo); } +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) @@ -172,18 +190,6 @@ status_t AudioPolicyService::doStartOutput(audio_io_handle_t output, return NO_INIT; } ALOGV("doStartOutput()"); - spaudioPolicyEffects; - { - 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 mpAudioPolicy->start_output(mpAudioPolicy, output, stream, session); @@ -609,6 +615,14 @@ status_t AudioPolicyService::getOutputForAttr(const audio_attributes_t *attr, if (*output == AUDIO_IO_HANDLE_NONE) { return INVALID_OPERATION; } + + Mutex::Autolock _l(mLock); + sp audioPolicyEffects; + audioPolicyEffects = mAudioPolicyEffects; + if (audioPolicyEffects != 0) { + addOutputSessionEffects(*output, *stream, session, flags, channelMask, uid); + } + return NO_ERROR; } -- cgit v1.1