From 6a94d69dc4f32abb53c466a96f905bb199be6417 Mon Sep 17 00:00:00 2001 From: Eric Laurent Date: Tue, 20 May 2014 11:18:06 -0700 Subject: 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 --- services/audiopolicy/AudioPolicyInterface.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'services/audiopolicy/AudioPolicyInterface.h') 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; + }; -- cgit v1.1