summaryrefslogtreecommitdiffstats
path: root/audio
diff options
context:
space:
mode:
authorJean-Michel Trivi <jmtrivi@google.com>2012-10-10 12:39:04 -0700
committerJean-Michel Trivi <jmtrivi@google.com>2012-10-10 15:19:35 -0700
commitabc55c698301e05a80d7f9394c75abca0b307602 (patch)
treeef3eadabdd66dd30392c9a451410c5ad3950294c /audio
parent738207def5f691d605ae33d041116829a74513a9 (diff)
downloadhardware_libhardware_legacy-abc55c698301e05a80d7f9394c75abca0b307602.zip
hardware_libhardware_legacy-abc55c698301e05a80d7f9394c75abca0b307602.tar.gz
hardware_libhardware_legacy-abc55c698301e05a80d7f9394c75abca0b307602.tar.bz2
AudioPolicyManager supports querying active record sources
Add support for querying whether there is currently a recording underway from the specified audio source. Bug 7314859 Change-Id: I8894845b176241134870af5df2bebc5ef27e4de4
Diffstat (limited to 'audio')
-rw-r--r--audio/AudioPolicyManagerBase.cpp13
-rw-r--r--audio/audio_policy_hal.cpp7
2 files changed, 20 insertions, 0 deletions
diff --git a/audio/AudioPolicyManagerBase.cpp b/audio/AudioPolicyManagerBase.cpp
index c7519c9..cacc37d 100644
--- a/audio/AudioPolicyManagerBase.cpp
+++ b/audio/AudioPolicyManagerBase.cpp
@@ -1159,6 +1159,19 @@ bool AudioPolicyManagerBase::isStreamActive(int stream, uint32_t inPastMs) const
return false;
}
+bool AudioPolicyManagerBase::isSourceActive(audio_source_t source) const
+{
+ for (size_t i = 0; i < mInputs.size(); i++) {
+ const AudioInputDescriptor * inputDescriptor = mInputs.valueAt(i);
+ if ((inputDescriptor->mInputSource == (int) source)
+ && (inputDescriptor->mRefCount > 0)) {
+ return true;
+ }
+ }
+ return false;
+}
+
+
status_t AudioPolicyManagerBase::dump(int fd)
{
diff --git a/audio/audio_policy_hal.cpp b/audio/audio_policy_hal.cpp
index 9e29bc4..bff6b74 100644
--- a/audio/audio_policy_hal.cpp
+++ b/audio/audio_policy_hal.cpp
@@ -302,6 +302,12 @@ static bool ap_is_stream_active(const struct audio_policy *pol, audio_stream_typ
return lap->apm->isStreamActive((int) stream, in_past_ms);
}
+static bool ap_is_source_active(const struct audio_policy *pol, audio_source_t source)
+{
+ const struct legacy_audio_policy *lap = to_clap(pol);
+ return lap->apm->isSourceActive(source);
+}
+
static int ap_dump(const struct audio_policy *pol, int fd)
{
const struct legacy_audio_policy *lap = to_clap(pol);
@@ -352,6 +358,7 @@ static int create_legacy_ap(const struct audio_policy_device *device,
lap->policy.unregister_effect = ap_unregister_effect;
lap->policy.set_effect_enabled = ap_set_effect_enabled;
lap->policy.is_stream_active = ap_is_stream_active;
+ lap->policy.is_source_active = ap_is_source_active;
lap->policy.dump = ap_dump;
lap->service = service;