summaryrefslogtreecommitdiffstats
path: root/services/audiopolicy
diff options
context:
space:
mode:
authorSteve Kondik <steve@cyngn.com>2016-04-15 01:21:35 -0700
committerSteve Kondik <shade@chemlab.org>2016-04-16 06:13:53 -0700
commit489c9fb62f02e1d23d6d6c89b22f7d19c596e65e (patch)
tree0656d9dbfdb9492e315936bb7c6dc0e40aefc4ca /services/audiopolicy
parentc38d4f266ee016950bff2e08a8987e84f1d6461e (diff)
downloadframeworks_av-489c9fb62f02e1d23d6d6c89b22f7d19c596e65e.zip
frameworks_av-489c9fb62f02e1d23d6d6c89b22f7d19c596e65e.tar.gz
frameworks_av-489c9fb62f02e1d23d6d6c89b22f7d19c596e65e.tar.bz2
audiopolicy: Update legacy policy for session callbacks
Change-Id: Id6f24195721a48dc5a0d3a7ff7fbee2bd8614128
Diffstat (limited to 'services/audiopolicy')
-rw-r--r--services/audiopolicy/service/AudioPolicyInterfaceImplLegacy.cpp38
1 files changed, 26 insertions, 12 deletions
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()");
- 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 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;
+ audioPolicyEffects = mAudioPolicyEffects;
+ if (audioPolicyEffects != 0) {
+ addOutputSessionEffects(*output, *stream, session, flags, channelMask, uid);
+ }
+
return NO_ERROR;
}