AudioPolicyClientImpl.cpp revision de3f8392fbf380ba6f09d009b00d7172477389a2
1/* 2 * Copyright (C) 2009 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17#define LOG_TAG "AudioPolicyClientImpl" 18//#define LOG_NDEBUG 0 19 20#include <utils/Log.h> 21#include "AudioPolicyService.h" 22 23namespace android { 24 25/* implementation of the client interface from the policy manager */ 26 27audio_module_handle_t AudioPolicyService::AudioPolicyClient::loadHwModule(const char *name) 28{ 29 sp<IAudioFlinger> af = AudioSystem::get_audio_flinger(); 30 if (af == 0) { 31 ALOGW("%s: could not get AudioFlinger", __func__); 32 return 0; 33 } 34 35 return af->loadHwModule(name); 36} 37 38status_t AudioPolicyService::AudioPolicyClient::openOutput(audio_module_handle_t module, 39 audio_io_handle_t *output, 40 audio_config_t *config, 41 audio_devices_t *devices, 42 const String8& address, 43 uint32_t *latencyMs, 44 audio_output_flags_t flags) 45{ 46 sp<IAudioFlinger> af = AudioSystem::get_audio_flinger(); 47 if (af == 0) { 48 ALOGW("%s: could not get AudioFlinger", __func__); 49 return PERMISSION_DENIED; 50 } 51 return af->openOutput(module, output, config, devices, address, latencyMs, flags); 52} 53 54audio_io_handle_t AudioPolicyService::AudioPolicyClient::openDuplicateOutput( 55 audio_io_handle_t output1, 56 audio_io_handle_t output2) 57{ 58 sp<IAudioFlinger> af = AudioSystem::get_audio_flinger(); 59 if (af == 0) { 60 ALOGW("%s: could not get AudioFlinger", __func__); 61 return 0; 62 } 63 return af->openDuplicateOutput(output1, output2); 64} 65 66status_t AudioPolicyService::AudioPolicyClient::closeOutput(audio_io_handle_t output) 67{ 68 sp<IAudioFlinger> af = AudioSystem::get_audio_flinger(); 69 if (af == 0) { 70 return PERMISSION_DENIED; 71 } 72 73 return af->closeOutput(output); 74} 75 76status_t AudioPolicyService::AudioPolicyClient::suspendOutput(audio_io_handle_t output) 77{ 78 sp<IAudioFlinger> af = AudioSystem::get_audio_flinger(); 79 if (af == 0) { 80 ALOGW("%s: could not get AudioFlinger", __func__); 81 return PERMISSION_DENIED; 82 } 83 84 return af->suspendOutput(output); 85} 86 87status_t AudioPolicyService::AudioPolicyClient::restoreOutput(audio_io_handle_t output) 88{ 89 sp<IAudioFlinger> af = AudioSystem::get_audio_flinger(); 90 if (af == 0) { 91 ALOGW("%s: could not get AudioFlinger", __func__); 92 return PERMISSION_DENIED; 93 } 94 95 return af->restoreOutput(output); 96} 97 98status_t AudioPolicyService::AudioPolicyClient::openInput(audio_module_handle_t module, 99 audio_io_handle_t *input, 100 audio_config_t *config, 101 audio_devices_t *device, 102 const String8& address, 103 audio_source_t source, 104 audio_input_flags_t flags) 105{ 106 sp<IAudioFlinger> af = AudioSystem::get_audio_flinger(); 107 if (af == 0) { 108 ALOGW("%s: could not get AudioFlinger", __func__); 109 return PERMISSION_DENIED; 110 } 111 112 return af->openInput(module, input, config, device, address, source, flags); 113} 114 115status_t AudioPolicyService::AudioPolicyClient::closeInput(audio_io_handle_t input) 116{ 117 sp<IAudioFlinger> af = AudioSystem::get_audio_flinger(); 118 if (af == 0) { 119 return PERMISSION_DENIED; 120 } 121 122 return af->closeInput(input); 123} 124 125status_t AudioPolicyService::AudioPolicyClient::setStreamVolume(audio_stream_type_t stream, 126 float volume, audio_io_handle_t output, 127 int delay_ms) 128{ 129 return mAudioPolicyService->setStreamVolume(stream, volume, output, 130 delay_ms); 131} 132 133status_t AudioPolicyService::AudioPolicyClient::invalidateStream(audio_stream_type_t stream) 134{ 135 sp<IAudioFlinger> af = AudioSystem::get_audio_flinger(); 136 if (af == 0) { 137 return PERMISSION_DENIED; 138 } 139 140 return af->invalidateStream(stream); 141} 142 143void AudioPolicyService::AudioPolicyClient::setParameters(audio_io_handle_t io_handle, 144 const String8& keyValuePairs, 145 int delay_ms) 146{ 147 mAudioPolicyService->setParameters(io_handle, keyValuePairs.string(), delay_ms); 148} 149 150String8 AudioPolicyService::AudioPolicyClient::getParameters(audio_io_handle_t io_handle, 151 const String8& keys) 152{ 153 String8 result = AudioSystem::getParameters(io_handle, keys); 154 return result; 155} 156 157status_t AudioPolicyService::AudioPolicyClient::startTone(audio_policy_tone_t tone, 158 audio_stream_type_t stream) 159{ 160 return mAudioPolicyService->startTone(tone, stream); 161} 162 163status_t AudioPolicyService::AudioPolicyClient::stopTone() 164{ 165 return mAudioPolicyService->stopTone(); 166} 167 168status_t AudioPolicyService::AudioPolicyClient::setVoiceVolume(float volume, int delay_ms) 169{ 170 return mAudioPolicyService->setVoiceVolume(volume, delay_ms); 171} 172 173status_t AudioPolicyService::AudioPolicyClient::moveEffects(int session, 174 audio_io_handle_t src_output, 175 audio_io_handle_t dst_output) 176{ 177 sp<IAudioFlinger> af = AudioSystem::get_audio_flinger(); 178 if (af == 0) { 179 return PERMISSION_DENIED; 180 } 181 182 return af->moveEffects(session, src_output, dst_output); 183} 184 185status_t AudioPolicyService::AudioPolicyClient::createAudioPatch(const struct audio_patch *patch, 186 audio_patch_handle_t *handle, 187 int delayMs) 188{ 189 return mAudioPolicyService->clientCreateAudioPatch(patch, handle, delayMs); 190} 191 192status_t AudioPolicyService::AudioPolicyClient::releaseAudioPatch(audio_patch_handle_t handle, 193 int delayMs) 194{ 195 return mAudioPolicyService->clientReleaseAudioPatch(handle, delayMs); 196} 197 198status_t AudioPolicyService::AudioPolicyClient::setAudioPortConfig( 199 const struct audio_port_config *config, 200 int delayMs) 201{ 202 return mAudioPolicyService->clientSetAudioPortConfig(config, delayMs); 203} 204 205void AudioPolicyService::AudioPolicyClient::onAudioPortListUpdate() 206{ 207 mAudioPolicyService->onAudioPortListUpdate(); 208} 209 210void AudioPolicyService::AudioPolicyClient::onAudioPatchListUpdate() 211{ 212 mAudioPolicyService->onAudioPatchListUpdate(); 213} 214 215audio_unique_id_t AudioPolicyService::AudioPolicyClient::newAudioUniqueId() 216{ 217 return AudioSystem::newAudioUniqueId(); 218} 219 220}; // namespace android 221