diff options
author | Jean-Michel Trivi <jmtrivi@google.com> | 2012-10-10 12:11:16 -0700 |
---|---|---|
committer | Jean-Michel Trivi <jmtrivi@google.com> | 2012-10-10 12:11:16 -0700 |
commit | d7086030fcf731e4bcef6c033cc6418cd04e6b91 (patch) | |
tree | 51f233eeff7c3e17e980d1fb0f41a2ba3f030b16 /media/libmedia | |
parent | dca0ac2193e87c57d871dd208073107408c13c0a (diff) | |
download | frameworks_av-d7086030fcf731e4bcef6c033cc6418cd04e6b91.zip frameworks_av-d7086030fcf731e4bcef6c033cc6418cd04e6b91.tar.gz frameworks_av-d7086030fcf731e4bcef6c033cc6418cd04e6b91.tar.bz2 |
Support querying active record sources
Add support for querying whether there is currently a recording
underway from the specified audio source.
Bug 7314859
Change-Id: I986b231a10ffd368b08ec2f9c7f348d28eaeb892
Diffstat (limited to 'media/libmedia')
-rw-r--r-- | media/libmedia/AudioSystem.cpp | 9 | ||||
-rw-r--r-- | media/libmedia/IAudioPolicyService.cpp | 17 |
2 files changed, 26 insertions, 0 deletions
diff --git a/media/libmedia/AudioSystem.cpp b/media/libmedia/AudioSystem.cpp index 5624df4..207f96f 100644 --- a/media/libmedia/AudioSystem.cpp +++ b/media/libmedia/AudioSystem.cpp @@ -735,6 +735,15 @@ status_t AudioSystem::isStreamActive(audio_stream_type_t stream, bool* state, ui return NO_ERROR; } +status_t AudioSystem::isSourceActive(audio_source_t stream, bool* state) +{ + const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service(); + if (aps == 0) return PERMISSION_DENIED; + if (state == NULL) return BAD_VALUE; + *state = aps->isSourceActive(stream); + return NO_ERROR; +} + int32_t AudioSystem::getPrimaryOutputSamplingRate() { const sp<IAudioFlinger>& af = AudioSystem::get_audio_flinger(); diff --git a/media/libmedia/IAudioPolicyService.cpp b/media/libmedia/IAudioPolicyService.cpp index 31c5d27..401437c 100644 --- a/media/libmedia/IAudioPolicyService.cpp +++ b/media/libmedia/IAudioPolicyService.cpp @@ -52,6 +52,7 @@ enum { REGISTER_EFFECT, UNREGISTER_EFFECT, IS_STREAM_ACTIVE, + IS_SOURCE_ACTIVE, GET_DEVICES_FOR_STREAM, QUERY_DEFAULT_PRE_PROCESSING, SET_EFFECT_ENABLED @@ -329,6 +330,15 @@ public: return reply.readInt32(); } + virtual bool isSourceActive(audio_source_t source) const + { + Parcel data, reply; + data.writeInterfaceToken(IAudioPolicyService::getInterfaceDescriptor()); + data.writeInt32((int32_t) source); + remote()->transact(IS_SOURCE_ACTIVE, data, &reply); + return reply.readInt32(); + } + virtual status_t queryDefaultPreProcessing(int audioSession, effect_descriptor_t *descriptors, uint32_t *count) @@ -592,6 +602,13 @@ status_t BnAudioPolicyService::onTransact( return NO_ERROR; } break; + case IS_SOURCE_ACTIVE: { + CHECK_INTERFACE(IAudioPolicyService, data, reply); + audio_source_t source = (audio_source_t) data.readInt32(); + reply->writeInt32( isSourceActive(source)); + return NO_ERROR; + } + case QUERY_DEFAULT_PRE_PROCESSING: { CHECK_INTERFACE(IAudioPolicyService, data, reply); int audioSession = data.readInt32(); |