From a4123803d0a0e9e0c69faa4207d357cc74a65d58 Mon Sep 17 00:00:00 2001 From: Steve Kondik Date: Wed, 6 Apr 2016 18:35:02 -0700 Subject: audiopolicy: Be a little smarter with auto-attach * The edge cases, ZOMG! * Instead of relying on effects to be automatically attached, let's just always notify userspace and send a bit more information. This lets the application decide if effects should be attached rather than relying on a hard-coded configuration file. * Perform the setup in getOutputForAttr, but do it on the command thread so we don't block the client. OPO-593 Change-Id: I3900b349f2e895d51fa3a3dcc2de0c4bdf6dbc08 --- media/libmedia/IAudioPolicyServiceClient.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'media/libmedia/IAudioPolicyServiceClient.cpp') diff --git a/media/libmedia/IAudioPolicyServiceClient.cpp b/media/libmedia/IAudioPolicyServiceClient.cpp index d6207ce..ecf0d1f 100644 --- a/media/libmedia/IAudioPolicyServiceClient.cpp +++ b/media/libmedia/IAudioPolicyServiceClient.cpp @@ -66,12 +66,18 @@ public: } void onOutputSessionEffectsUpdate(audio_stream_type_t stream, - audio_unique_id_t sessionId, bool added) + audio_session_t sessionId, + audio_output_flags_t flags, + audio_channel_mask_t channelMask, + uid_t uid, bool added) { Parcel data, reply; data.writeInterfaceToken(IAudioPolicyServiceClient::getInterfaceDescriptor()); data.writeInt32(stream); data.writeInt32(sessionId); + data.writeInt32(flags); + data.writeInt32(channelMask); + data.writeInt32(uid); data.writeInt32(added ? 1 : 0); remote()->transact(OUTPUT_SESSION_EFFECTS_UPDATE, data, &reply, IBinder::FLAG_ONEWAY); } @@ -105,9 +111,12 @@ status_t BnAudioPolicyServiceClient::onTransact( case OUTPUT_SESSION_EFFECTS_UPDATE: { CHECK_INTERFACE(IAudioPolicyServiceClient, data, reply); audio_stream_type_t stream = static_cast(data.readInt32()); - audio_unique_id_t sessionId = static_cast(data.readInt32()); + audio_session_t sessionId = static_cast(data.readInt32()); + audio_output_flags_t flags = static_cast(data.readInt32()); + audio_channel_mask_t channelMask = static_cast(data.readInt32()); + uid_t uid = static_cast(data.readInt32()); bool added = data.readInt32() > 0; - onOutputSessionEffectsUpdate(stream, sessionId, added); + onOutputSessionEffectsUpdate(stream, sessionId, flags, channelMask, uid, added); return NO_ERROR; } default: -- cgit v1.1