Loading media/libaudioclient/AudioSystem.cpp +6 −4 Original line number Diff line number Diff line Loading @@ -41,7 +41,6 @@ audio_error_callback AudioSystem::gAudioErrorCallback = NULL; dynamic_policy_callback AudioSystem::gDynPolicyCallback = NULL; record_config_callback AudioSystem::gRecordConfigCallback = NULL; // establish binder interface to AudioFlinger service const sp<IAudioFlinger> AudioSystem::get_audio_flinger() { Loading Loading @@ -917,11 +916,14 @@ status_t AudioSystem::getInputForAttr(const audio_attributes_t *attr, } status_t AudioSystem::startInput(audio_io_handle_t input, audio_session_t session) audio_session_t session, audio_devices_t device, uid_t uid, bool *silenced) { const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service(); if (aps == 0) return PERMISSION_DENIED; return aps->startInput(input, session); return aps->startInput(input, session, device, uid, silenced); } status_t AudioSystem::stopInput(audio_io_handle_t input, Loading media/libaudioclient/IAudioFlinger.cpp +20 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ enum { SET_MODE, SET_MIC_MUTE, GET_MIC_MUTE, SET_RECORD_SILENCED, SET_PARAMETERS, GET_PARAMETERS, REGISTER_CLIENT, Loading Loading @@ -306,6 +307,15 @@ public: return reply.readInt32(); } virtual void setRecordSilenced(uid_t uid, bool silenced) { Parcel data, reply; data.writeInterfaceToken(IAudioFlinger::getInterfaceDescriptor()); data.writeInt32(uid); data.writeInt32(silenced ? 1 : 0); remote()->transact(SET_RECORD_SILENCED, data, &reply); } virtual status_t setParameters(audio_io_handle_t ioHandle, const String8& keyValuePairs) { Parcel data, reply; Loading Loading @@ -859,6 +869,7 @@ status_t BnAudioFlinger::onTransact( case RELEASE_AUDIO_PATCH: case LIST_AUDIO_PATCHES: case SET_AUDIO_PORT_CONFIG: case SET_RECORD_SILENCED: ALOGW("%s: transaction %d received from PID %d", __func__, code, IPCThreadState::self()->getCallingPid()); return INVALID_OPERATION; Loading Loading @@ -1024,6 +1035,15 @@ status_t BnAudioFlinger::onTransact( reply->writeInt32( getMicMute() ); return NO_ERROR; } break; case SET_RECORD_SILENCED: { CHECK_INTERFACE(IAudioFlinger, data, reply); uid_t uid = data.readInt32(); audio_source_t source; data.read(&source, sizeof(audio_source_t)); bool silenced = data.readInt32() == 1; setRecordSilenced(uid, silenced); return NO_ERROR; } break; case SET_PARAMETERS: { CHECK_INTERFACE(IAudioFlinger, data, reply); audio_io_handle_t ioHandle = (audio_io_handle_t) data.readInt32(); Loading media/libaudioclient/IAudioPolicyService.cpp +16 −3 Original line number Diff line number Diff line Loading @@ -330,14 +330,22 @@ public: } virtual status_t startInput(audio_io_handle_t input, audio_session_t session) audio_session_t session, audio_devices_t device, uid_t uid, bool *silenced) { Parcel data, reply; data.writeInterfaceToken(IAudioPolicyService::getInterfaceDescriptor()); data.writeInt32(input); data.writeInt32(session); data.writeInt32(device); data.writeInt32(uid); data.writeInt32(*silenced ? 1 : 0); remote()->transact(START_INPUT, data, &reply); return static_cast <status_t> (reply.readInt32()); status_t status = static_cast <status_t> (reply.readInt32()); *silenced = reply.readInt32() == 1; return status; } virtual status_t stopInput(audio_io_handle_t input, Loading Loading @@ -1045,7 +1053,12 @@ status_t BnAudioPolicyService::onTransact( CHECK_INTERFACE(IAudioPolicyService, data, reply); audio_io_handle_t input = static_cast <audio_io_handle_t>(data.readInt32()); audio_session_t session = static_cast <audio_session_t>(data.readInt32()); reply->writeInt32(static_cast <uint32_t>(startInput(input, session))); audio_devices_t device = static_cast <audio_devices_t>(data.readInt32()); uid_t uid = static_cast <uid_t>(data.readInt32()); bool silenced = data.readInt32() == 1; status_t status = startInput(input, session, device, uid, &silenced); reply->writeInt32(static_cast <uint32_t>(status)); reply->writeInt32(silenced ? 1 : 0); return NO_ERROR; } break; Loading media/libaudioclient/include/media/AudioSystem.h +4 −1 Original line number Diff line number Diff line Loading @@ -244,7 +244,10 @@ public: audio_port_handle_t *portId); static status_t startInput(audio_io_handle_t input, audio_session_t session); audio_session_t session, audio_devices_t device, uid_t uid, bool *silenced); static status_t stopInput(audio_io_handle_t input, audio_session_t session); static void releaseInput(audio_io_handle_t input, Loading media/libaudioclient/include/media/IAudioFlinger.h +1 −0 Original line number Diff line number Diff line Loading @@ -368,6 +368,7 @@ public: // mic mute/state virtual status_t setMicMute(bool state) = 0; virtual bool getMicMute() const = 0; virtual void setRecordSilenced(uid_t uid, bool silenced) = 0; virtual status_t setParameters(audio_io_handle_t ioHandle, const String8& keyValuePairs) = 0; Loading Loading
media/libaudioclient/AudioSystem.cpp +6 −4 Original line number Diff line number Diff line Loading @@ -41,7 +41,6 @@ audio_error_callback AudioSystem::gAudioErrorCallback = NULL; dynamic_policy_callback AudioSystem::gDynPolicyCallback = NULL; record_config_callback AudioSystem::gRecordConfigCallback = NULL; // establish binder interface to AudioFlinger service const sp<IAudioFlinger> AudioSystem::get_audio_flinger() { Loading Loading @@ -917,11 +916,14 @@ status_t AudioSystem::getInputForAttr(const audio_attributes_t *attr, } status_t AudioSystem::startInput(audio_io_handle_t input, audio_session_t session) audio_session_t session, audio_devices_t device, uid_t uid, bool *silenced) { const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service(); if (aps == 0) return PERMISSION_DENIED; return aps->startInput(input, session); return aps->startInput(input, session, device, uid, silenced); } status_t AudioSystem::stopInput(audio_io_handle_t input, Loading
media/libaudioclient/IAudioFlinger.cpp +20 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ enum { SET_MODE, SET_MIC_MUTE, GET_MIC_MUTE, SET_RECORD_SILENCED, SET_PARAMETERS, GET_PARAMETERS, REGISTER_CLIENT, Loading Loading @@ -306,6 +307,15 @@ public: return reply.readInt32(); } virtual void setRecordSilenced(uid_t uid, bool silenced) { Parcel data, reply; data.writeInterfaceToken(IAudioFlinger::getInterfaceDescriptor()); data.writeInt32(uid); data.writeInt32(silenced ? 1 : 0); remote()->transact(SET_RECORD_SILENCED, data, &reply); } virtual status_t setParameters(audio_io_handle_t ioHandle, const String8& keyValuePairs) { Parcel data, reply; Loading Loading @@ -859,6 +869,7 @@ status_t BnAudioFlinger::onTransact( case RELEASE_AUDIO_PATCH: case LIST_AUDIO_PATCHES: case SET_AUDIO_PORT_CONFIG: case SET_RECORD_SILENCED: ALOGW("%s: transaction %d received from PID %d", __func__, code, IPCThreadState::self()->getCallingPid()); return INVALID_OPERATION; Loading Loading @@ -1024,6 +1035,15 @@ status_t BnAudioFlinger::onTransact( reply->writeInt32( getMicMute() ); return NO_ERROR; } break; case SET_RECORD_SILENCED: { CHECK_INTERFACE(IAudioFlinger, data, reply); uid_t uid = data.readInt32(); audio_source_t source; data.read(&source, sizeof(audio_source_t)); bool silenced = data.readInt32() == 1; setRecordSilenced(uid, silenced); return NO_ERROR; } break; case SET_PARAMETERS: { CHECK_INTERFACE(IAudioFlinger, data, reply); audio_io_handle_t ioHandle = (audio_io_handle_t) data.readInt32(); Loading
media/libaudioclient/IAudioPolicyService.cpp +16 −3 Original line number Diff line number Diff line Loading @@ -330,14 +330,22 @@ public: } virtual status_t startInput(audio_io_handle_t input, audio_session_t session) audio_session_t session, audio_devices_t device, uid_t uid, bool *silenced) { Parcel data, reply; data.writeInterfaceToken(IAudioPolicyService::getInterfaceDescriptor()); data.writeInt32(input); data.writeInt32(session); data.writeInt32(device); data.writeInt32(uid); data.writeInt32(*silenced ? 1 : 0); remote()->transact(START_INPUT, data, &reply); return static_cast <status_t> (reply.readInt32()); status_t status = static_cast <status_t> (reply.readInt32()); *silenced = reply.readInt32() == 1; return status; } virtual status_t stopInput(audio_io_handle_t input, Loading Loading @@ -1045,7 +1053,12 @@ status_t BnAudioPolicyService::onTransact( CHECK_INTERFACE(IAudioPolicyService, data, reply); audio_io_handle_t input = static_cast <audio_io_handle_t>(data.readInt32()); audio_session_t session = static_cast <audio_session_t>(data.readInt32()); reply->writeInt32(static_cast <uint32_t>(startInput(input, session))); audio_devices_t device = static_cast <audio_devices_t>(data.readInt32()); uid_t uid = static_cast <uid_t>(data.readInt32()); bool silenced = data.readInt32() == 1; status_t status = startInput(input, session, device, uid, &silenced); reply->writeInt32(static_cast <uint32_t>(status)); reply->writeInt32(silenced ? 1 : 0); return NO_ERROR; } break; Loading
media/libaudioclient/include/media/AudioSystem.h +4 −1 Original line number Diff line number Diff line Loading @@ -244,7 +244,10 @@ public: audio_port_handle_t *portId); static status_t startInput(audio_io_handle_t input, audio_session_t session); audio_session_t session, audio_devices_t device, uid_t uid, bool *silenced); static status_t stopInput(audio_io_handle_t input, audio_session_t session); static void releaseInput(audio_io_handle_t input, Loading
media/libaudioclient/include/media/IAudioFlinger.h +1 −0 Original line number Diff line number Diff line Loading @@ -368,6 +368,7 @@ public: // mic mute/state virtual status_t setMicMute(bool state) = 0; virtual bool getMicMute() const = 0; virtual void setRecordSilenced(uid_t uid, bool silenced) = 0; virtual status_t setParameters(audio_io_handle_t ioHandle, const String8& keyValuePairs) = 0; Loading