From baac183f3808d7b68f184647a97bd381620415fe Mon Sep 17 00:00:00 2001 From: Eric Laurent Date: Mon, 1 Dec 2014 17:52:59 -0800 Subject: audio policy: binder calls for dynamic audio policy mixes Add binder calls to register and unregister dynamic mixes to AudioPolicyManager. Bug: 16009464. Change-Id: I4ef38166d0cfc88c984970969380d0cd6eb083ac --- services/audiopolicy/AudioPolicyInterface.h | 4 ++++ services/audiopolicy/AudioPolicyInterfaceImpl.cpp | 16 ++++++++++++++++ services/audiopolicy/AudioPolicyInterfaceImplLegacy.cpp | 8 +++++++- services/audiopolicy/AudioPolicyService.h | 3 +++ 4 files changed, 30 insertions(+), 1 deletion(-) (limited to 'services') diff --git a/services/audiopolicy/AudioPolicyInterface.h b/services/audiopolicy/AudioPolicyInterface.h index 5bcbca8..2826cad 100644 --- a/services/audiopolicy/AudioPolicyInterface.h +++ b/services/audiopolicy/AudioPolicyInterface.h @@ -18,6 +18,7 @@ #define ANDROID_AUDIOPOLICY_INTERFACE_H #include +#include #include #include @@ -201,6 +202,9 @@ public: audio_devices_t *device) = 0; virtual status_t releaseSoundTriggerSession(audio_session_t session) = 0; + + virtual status_t registerPolicyMixes(Vector mixes) = 0; + virtual status_t unregisterPolicyMixes(Vector mixes) = 0; }; diff --git a/services/audiopolicy/AudioPolicyInterfaceImpl.cpp b/services/audiopolicy/AudioPolicyInterfaceImpl.cpp index abb1b21..d3c9013 100644 --- a/services/audiopolicy/AudioPolicyInterfaceImpl.cpp +++ b/services/audiopolicy/AudioPolicyInterfaceImpl.cpp @@ -614,4 +614,20 @@ status_t AudioPolicyService::releaseSoundTriggerSession(audio_session_t session) return mAudioPolicyManager->releaseSoundTriggerSession(session); } +status_t AudioPolicyService::registerPolicyMixes(Vector mixes, bool registration) +{ + Mutex::Autolock _l(mLock); + if(!modifyAudioRoutingAllowed()) { + return PERMISSION_DENIED; + } + if (mAudioPolicyManager == NULL) { + return NO_INIT; + } + if (registration) { + return mAudioPolicyManager->registerPolicyMixes(mixes); + } else { + return mAudioPolicyManager->unregisterPolicyMixes(mixes); + } +} + }; // namespace android diff --git a/services/audiopolicy/AudioPolicyInterfaceImplLegacy.cpp b/services/audiopolicy/AudioPolicyInterfaceImplLegacy.cpp index 4e42b25..4bc3c7f 100644 --- a/services/audiopolicy/AudioPolicyInterfaceImplLegacy.cpp +++ b/services/audiopolicy/AudioPolicyInterfaceImplLegacy.cpp @@ -555,7 +555,7 @@ status_t AudioPolicyService::setAudioPortConfig(const struct audio_port_config * status_t AudioPolicyService::getOutputForAttr(const audio_attributes_t *attr, audio_io_handle_t *output, - audio_session_t session, + audio_session_t session __unused, audio_stream_type_t *stream, uint32_t samplingRate, audio_format_t format, @@ -590,4 +590,10 @@ status_t AudioPolicyService::releaseSoundTriggerSession(audio_session_t session return INVALID_OPERATION; } +status_t AudioPolicyService::registerPolicyMixes(Vector mixes __unused, + bool registration __unused) +{ + return INVALID_OPERATION; +} + }; // namespace android diff --git a/services/audiopolicy/AudioPolicyService.h b/services/audiopolicy/AudioPolicyService.h index da17728..09375cf 100644 --- a/services/audiopolicy/AudioPolicyService.h +++ b/services/audiopolicy/AudioPolicyService.h @@ -30,6 +30,7 @@ #include #include #include +#include #include #include "AudioPolicyEffects.h" #include "AudioPolicyManager.h" @@ -185,6 +186,8 @@ public: virtual audio_mode_t getPhoneState(); + virtual status_t registerPolicyMixes(Vector mixes, bool registration); + status_t doStopOutput(audio_io_handle_t output, audio_stream_type_t stream, audio_session_t session); -- cgit v1.1