summaryrefslogtreecommitdiffstats
path: root/services/audiopolicy/AudioPolicyInterface.h
diff options
context:
space:
mode:
authorEric Laurent <elaurent@google.com>2014-05-20 11:18:06 -0700
committerEric Laurent <elaurent@google.com>2014-05-29 17:57:55 -0700
commit6a94d69dc4f32abb53c466a96f905bb199be6417 (patch)
treeeef3552877f202429801a0b20f2ae31aad7801e7 /services/audiopolicy/AudioPolicyInterface.h
parent32f93b7bedc44b425ba99d69dec998334e759532 (diff)
downloadframeworks_av-6a94d69dc4f32abb53c466a96f905bb199be6417.zip
frameworks_av-6a94d69dc4f32abb53c466a96f905bb199be6417.tar.gz
frameworks_av-6a94d69dc4f32abb53c466a96f905bb199be6417.tar.bz2
audio policy: implement routing control
Add implementation of audio routing control via AudioSystem APIs. The following APIs are implemented: - listAudioPorts(): return a list of devices and output/input mixers ports that can be used as sources or sinks for audio patches. - createAudioPatch()/releaseAudioPatch(): create/release a connection patch between two audio ports (e.g. to connect input from an HDMI device to a speaker output device). Only one client application can own a patch from a given source. When an audio port (device or mix) is part of an application created patch, its routing cannot not be changed by a policy decision. - listAudioPatches(): return a list of existing patches. Each audio port addition/removal and each audio patch creation/release increments a generation count. This generation count is used to ensure consistency betwen calls to listAudioPorts() and listAudioPatches(). Bug: 14815883. Change-Id: I022b638c2f5f0bb41543c7cfca7488fb45cfdd80
Diffstat (limited to 'services/audiopolicy/AudioPolicyInterface.h')
-rw-r--r--services/audiopolicy/AudioPolicyInterface.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/services/audiopolicy/AudioPolicyInterface.h b/services/audiopolicy/AudioPolicyInterface.h
index bb2deb6..98ad1d4 100644
--- a/services/audiopolicy/AudioPolicyInterface.h
+++ b/services/audiopolicy/AudioPolicyInterface.h
@@ -162,6 +162,24 @@ public:
virtual status_t dump(int fd) = 0;
virtual bool isOffloadSupported(const audio_offload_info_t& offloadInfo) = 0;
+
+ virtual status_t listAudioPorts(audio_port_role_t role,
+ audio_port_type_t type,
+ unsigned int *num_ports,
+ struct audio_port *ports,
+ unsigned int *generation) = 0;
+ virtual status_t getAudioPort(struct audio_port *port) = 0;
+ virtual status_t createAudioPatch(const struct audio_patch *patch,
+ audio_patch_handle_t *handle,
+ uid_t uid) = 0;
+ virtual status_t releaseAudioPatch(audio_patch_handle_t handle,
+ uid_t uid) = 0;
+ virtual status_t listAudioPatches(unsigned int *num_patches,
+ struct audio_patch *patches,
+ unsigned int *generation) = 0;
+ virtual status_t setAudioPortConfig(const struct audio_port_config *config) = 0;
+ virtual void clearAudioPatches(uid_t uid) = 0;
+
};