From 4dc680607181e6a76f4e91a39366c4f5dfb7b03e Mon Sep 17 00:00:00 2001 From: Eric Laurent Date: Mon, 28 Jul 2014 17:26:49 -0700 Subject: audio policy: pass session ID to capture activity methods Indicate the audio session ID when calling getInput(), startInput(), stopInput(), releaseInput(). Bug: 12378680. Change-Id: I763793752f93e2f4e1445a5ab217c895af011038 --- media/libmedia/AudioRecord.cpp | 2 +- media/libmedia/AudioSystem.cpp | 15 +++++++++------ media/libmedia/IAudioPolicyService.cpp | 21 +++++++++++++++------ 3 files changed, 25 insertions(+), 13 deletions(-) (limited to 'media/libmedia') diff --git a/media/libmedia/AudioRecord.cpp b/media/libmedia/AudioRecord.cpp index 299a77c..9e7ba88 100644 --- a/media/libmedia/AudioRecord.cpp +++ b/media/libmedia/AudioRecord.cpp @@ -572,7 +572,7 @@ status_t AudioRecord::openRecord_l(size_t epoch) } release: - AudioSystem::releaseInput(input); + AudioSystem::releaseInput(input, (audio_session_t)mSessionId); if (status == NO_ERROR) { status = NO_INIT; } diff --git a/media/libmedia/AudioSystem.cpp b/media/libmedia/AudioSystem.cpp index 0d61885..365a594 100644 --- a/media/libmedia/AudioSystem.cpp +++ b/media/libmedia/AudioSystem.cpp @@ -696,25 +696,28 @@ audio_io_handle_t AudioSystem::getInput(audio_source_t inputSource, return aps->getInput(inputSource, samplingRate, format, channelMask, sessionId, flags); } -status_t AudioSystem::startInput(audio_io_handle_t input) +status_t AudioSystem::startInput(audio_io_handle_t input, + audio_session_t session) { const sp& aps = AudioSystem::get_audio_policy_service(); if (aps == 0) return PERMISSION_DENIED; - return aps->startInput(input); + return aps->startInput(input, session); } -status_t AudioSystem::stopInput(audio_io_handle_t input) +status_t AudioSystem::stopInput(audio_io_handle_t input, + audio_session_t session) { const sp& aps = AudioSystem::get_audio_policy_service(); if (aps == 0) return PERMISSION_DENIED; - return aps->stopInput(input); + return aps->stopInput(input, session); } -void AudioSystem::releaseInput(audio_io_handle_t input) +void AudioSystem::releaseInput(audio_io_handle_t input, + audio_session_t session) { const sp& aps = AudioSystem::get_audio_policy_service(); if (aps == 0) return; - aps->releaseInput(input); + aps->releaseInput(input, session); } status_t AudioSystem::initStreamVolume(audio_stream_type_t stream, diff --git a/media/libmedia/IAudioPolicyService.cpp b/media/libmedia/IAudioPolicyService.cpp index 40dfb58..1593b17 100644 --- a/media/libmedia/IAudioPolicyService.cpp +++ b/media/libmedia/IAudioPolicyService.cpp @@ -240,29 +240,35 @@ public: return static_cast (reply.readInt32()); } - virtual status_t startInput(audio_io_handle_t input) + virtual status_t startInput(audio_io_handle_t input, + audio_session_t session) { Parcel data, reply; data.writeInterfaceToken(IAudioPolicyService::getInterfaceDescriptor()); data.writeInt32(input); + data.writeInt32(session); remote()->transact(START_INPUT, data, &reply); return static_cast (reply.readInt32()); } - virtual status_t stopInput(audio_io_handle_t input) + virtual status_t stopInput(audio_io_handle_t input, + audio_session_t session) { Parcel data, reply; data.writeInterfaceToken(IAudioPolicyService::getInterfaceDescriptor()); data.writeInt32(input); + data.writeInt32(session); remote()->transact(STOP_INPUT, data, &reply); return static_cast (reply.readInt32()); } - virtual void releaseInput(audio_io_handle_t input) + virtual void releaseInput(audio_io_handle_t input, + audio_session_t session) { Parcel data, reply; data.writeInterfaceToken(IAudioPolicyService::getInterfaceDescriptor()); data.writeInt32(input); + data.writeInt32(session); remote()->transact(RELEASE_INPUT, data, &reply); } @@ -723,21 +729,24 @@ status_t BnAudioPolicyService::onTransact( case START_INPUT: { CHECK_INTERFACE(IAudioPolicyService, data, reply); audio_io_handle_t input = static_cast (data.readInt32()); - reply->writeInt32(static_cast (startInput(input))); + audio_session_t session = static_cast (data.readInt32()); + reply->writeInt32(static_cast (startInput(input, session))); return NO_ERROR; } break; case STOP_INPUT: { CHECK_INTERFACE(IAudioPolicyService, data, reply); audio_io_handle_t input = static_cast (data.readInt32()); - reply->writeInt32(static_cast (stopInput(input))); + audio_session_t session = static_cast (data.readInt32()); + reply->writeInt32(static_cast (stopInput(input, session))); return NO_ERROR; } break; case RELEASE_INPUT: { CHECK_INTERFACE(IAudioPolicyService, data, reply); audio_io_handle_t input = static_cast (data.readInt32()); - releaseInput(input); + audio_session_t session = static_cast (data.readInt32()); + releaseInput(input, session); return NO_ERROR; } break; -- cgit v1.1