Loading include/media/AudioSystem.h +3 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ #define ANDROID_AUDIOSYSTEM_H_ #include <hardware/audio_effect.h> #include <media/AudioPolicy.h> #include <media/IAudioFlingerClient.h> #include <media/IAudioPolicyServiceClient.h> #include <system/audio.h> Loading Loading @@ -324,6 +325,8 @@ public: static audio_mode_t getPhoneState(); static status_t registerPolicyMixes(Vector<AudioMix> mixes, bool registration); // ---------------------------------------------------------------------------- class AudioPortCallback : public RefBase Loading include/media/IAudioPolicyService.h +3 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ #include <utils/Errors.h> #include <binder/IInterface.h> #include <media/AudioSystem.h> #include <media/AudioPolicy.h> #include <media/IAudioPolicyServiceClient.h> #include <system/audio_policy.h> Loading Loading @@ -150,6 +151,8 @@ public: virtual status_t releaseSoundTriggerSession(audio_session_t session) = 0; virtual audio_mode_t getPhoneState() = 0; virtual status_t registerPolicyMixes(Vector<AudioMix> mixes, bool registration) = 0; }; Loading media/libmedia/AudioSystem.cpp +6 −0 Original line number Diff line number Diff line Loading @@ -958,6 +958,12 @@ audio_mode_t AudioSystem::getPhoneState() return aps->getPhoneState(); } status_t AudioSystem::registerPolicyMixes(Vector<AudioMix> mixes, bool registration) { const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service(); if (aps == 0) return PERMISSION_DENIED; return aps->registerPolicyMixes(mixes, registration); } // --------------------------------------------------------------------------- Loading media/libmedia/IAudioPolicyService.cpp +53 −1 Original line number Diff line number Diff line Loading @@ -69,7 +69,8 @@ enum { GET_OUTPUT_FOR_ATTR, ACQUIRE_SOUNDTRIGGER_SESSION, RELEASE_SOUNDTRIGGER_SESSION, GET_PHONE_STATE GET_PHONE_STATE, REGISTER_POLICY_MIXES, }; class BpAudioPolicyService : public BpInterface<IAudioPolicyService> Loading Loading @@ -675,6 +676,38 @@ public: } return (audio_mode_t)reply.readInt32(); } virtual status_t registerPolicyMixes(Vector<AudioMix> mixes, bool registration) { Parcel data, reply; data.writeInterfaceToken(IAudioPolicyService::getInterfaceDescriptor()); data.writeInt32(registration ? 1 : 0); size_t size = mixes.size(); if (size > MAX_MIXES_PER_POLICY) { size = MAX_MIXES_PER_POLICY; } size_t sizePosition = data.dataPosition(); data.writeInt32(size); size_t finalSize = size; for (size_t i = 0; i < size; i++) { size_t position = data.dataPosition(); if (mixes[i].writeToParcel(&data) != NO_ERROR) { data.setDataPosition(position); finalSize--; } } if (size != finalSize) { size_t position = data.dataPosition(); data.setDataPosition(sizePosition); data.writeInt32(finalSize); data.setDataPosition(position); } status_t status = remote()->transact(REGISTER_POLICY_MIXES, data, &reply); if (status == NO_ERROR) { status = (status_t)reply.readInt32(); } return status; } }; IMPLEMENT_META_INTERFACE(AudioPolicyService, "android.media.IAudioPolicyService"); Loading Loading @@ -1147,6 +1180,25 @@ status_t BnAudioPolicyService::onTransact( return NO_ERROR; } break; case REGISTER_POLICY_MIXES: { CHECK_INTERFACE(IAudioPolicyService, data, reply); bool registration = data.readInt32() == 1; Vector<AudioMix> mixes; size_t size = (size_t)data.readInt32(); if (size > MAX_MIXES_PER_POLICY) { size = MAX_MIXES_PER_POLICY; } for (size_t i = 0; i < size; i++) { AudioMix mix; if (mix.readFromParcel((Parcel*)&data) == NO_ERROR) { mixes.add(mix); } } status_t status = registerPolicyMixes(mixes, registration); reply->writeInt32(status); return NO_ERROR; } break; default: return BBinder::onTransact(code, data, reply, flags); } Loading services/audiopolicy/AudioPolicyInterface.h +4 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ #define ANDROID_AUDIOPOLICY_INTERFACE_H #include <media/AudioSystem.h> #include <media/AudioPolicy.h> #include <utils/String8.h> #include <hardware/audio_policy.h> Loading Loading @@ -201,6 +202,9 @@ public: audio_devices_t *device) = 0; virtual status_t releaseSoundTriggerSession(audio_session_t session) = 0; virtual status_t registerPolicyMixes(Vector<AudioMix> mixes) = 0; virtual status_t unregisterPolicyMixes(Vector<AudioMix> mixes) = 0; }; Loading Loading
include/media/AudioSystem.h +3 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ #define ANDROID_AUDIOSYSTEM_H_ #include <hardware/audio_effect.h> #include <media/AudioPolicy.h> #include <media/IAudioFlingerClient.h> #include <media/IAudioPolicyServiceClient.h> #include <system/audio.h> Loading Loading @@ -324,6 +325,8 @@ public: static audio_mode_t getPhoneState(); static status_t registerPolicyMixes(Vector<AudioMix> mixes, bool registration); // ---------------------------------------------------------------------------- class AudioPortCallback : public RefBase Loading
include/media/IAudioPolicyService.h +3 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ #include <utils/Errors.h> #include <binder/IInterface.h> #include <media/AudioSystem.h> #include <media/AudioPolicy.h> #include <media/IAudioPolicyServiceClient.h> #include <system/audio_policy.h> Loading Loading @@ -150,6 +151,8 @@ public: virtual status_t releaseSoundTriggerSession(audio_session_t session) = 0; virtual audio_mode_t getPhoneState() = 0; virtual status_t registerPolicyMixes(Vector<AudioMix> mixes, bool registration) = 0; }; Loading
media/libmedia/AudioSystem.cpp +6 −0 Original line number Diff line number Diff line Loading @@ -958,6 +958,12 @@ audio_mode_t AudioSystem::getPhoneState() return aps->getPhoneState(); } status_t AudioSystem::registerPolicyMixes(Vector<AudioMix> mixes, bool registration) { const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service(); if (aps == 0) return PERMISSION_DENIED; return aps->registerPolicyMixes(mixes, registration); } // --------------------------------------------------------------------------- Loading
media/libmedia/IAudioPolicyService.cpp +53 −1 Original line number Diff line number Diff line Loading @@ -69,7 +69,8 @@ enum { GET_OUTPUT_FOR_ATTR, ACQUIRE_SOUNDTRIGGER_SESSION, RELEASE_SOUNDTRIGGER_SESSION, GET_PHONE_STATE GET_PHONE_STATE, REGISTER_POLICY_MIXES, }; class BpAudioPolicyService : public BpInterface<IAudioPolicyService> Loading Loading @@ -675,6 +676,38 @@ public: } return (audio_mode_t)reply.readInt32(); } virtual status_t registerPolicyMixes(Vector<AudioMix> mixes, bool registration) { Parcel data, reply; data.writeInterfaceToken(IAudioPolicyService::getInterfaceDescriptor()); data.writeInt32(registration ? 1 : 0); size_t size = mixes.size(); if (size > MAX_MIXES_PER_POLICY) { size = MAX_MIXES_PER_POLICY; } size_t sizePosition = data.dataPosition(); data.writeInt32(size); size_t finalSize = size; for (size_t i = 0; i < size; i++) { size_t position = data.dataPosition(); if (mixes[i].writeToParcel(&data) != NO_ERROR) { data.setDataPosition(position); finalSize--; } } if (size != finalSize) { size_t position = data.dataPosition(); data.setDataPosition(sizePosition); data.writeInt32(finalSize); data.setDataPosition(position); } status_t status = remote()->transact(REGISTER_POLICY_MIXES, data, &reply); if (status == NO_ERROR) { status = (status_t)reply.readInt32(); } return status; } }; IMPLEMENT_META_INTERFACE(AudioPolicyService, "android.media.IAudioPolicyService"); Loading Loading @@ -1147,6 +1180,25 @@ status_t BnAudioPolicyService::onTransact( return NO_ERROR; } break; case REGISTER_POLICY_MIXES: { CHECK_INTERFACE(IAudioPolicyService, data, reply); bool registration = data.readInt32() == 1; Vector<AudioMix> mixes; size_t size = (size_t)data.readInt32(); if (size > MAX_MIXES_PER_POLICY) { size = MAX_MIXES_PER_POLICY; } for (size_t i = 0; i < size; i++) { AudioMix mix; if (mix.readFromParcel((Parcel*)&data) == NO_ERROR) { mixes.add(mix); } } status_t status = registerPolicyMixes(mixes, registration); reply->writeInt32(status); return NO_ERROR; } break; default: return BBinder::onTransact(code, data, reply, flags); } Loading
services/audiopolicy/AudioPolicyInterface.h +4 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ #define ANDROID_AUDIOPOLICY_INTERFACE_H #include <media/AudioSystem.h> #include <media/AudioPolicy.h> #include <utils/String8.h> #include <hardware/audio_policy.h> Loading Loading @@ -201,6 +202,9 @@ public: audio_devices_t *device) = 0; virtual status_t releaseSoundTriggerSession(audio_session_t session) = 0; virtual status_t registerPolicyMixes(Vector<AudioMix> mixes) = 0; virtual status_t unregisterPolicyMixes(Vector<AudioMix> mixes) = 0; }; Loading