AudioPolicyClientImpl.cpp revision ec40d284218466d8f0e832e7eb88e6ea6c479c88
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 38audio_io_handle_t AudioPolicyService::AudioPolicyClient::openOutput(audio_module_handle_t module, 39 audio_devices_t *pDevices, 40 uint32_t *pSamplingRate, 41 audio_format_t *pFormat, 42 audio_channel_mask_t *pChannelMask, 43 uint32_t *pLatencyMs, 44 audio_output_flags_t flags, 45 const audio_offload_info_t *offloadInfo) 46{ 47 sp<IAudioFlinger> af = AudioSystem::get_audio_flinger(); 48 if (af == 0) { 49 ALOGW("%s: could not get AudioFlinger", __func__); 50 return 0; 51 } 52 return af->openOutput(module, pDevices, pSamplingRate, pFormat, pChannelMask, 53 pLatencyMs, flags, offloadInfo); 54} 55 56audio_io_handle_t AudioPolicyService::AudioPolicyClient::openDuplicateOutput( 57 audio_io_handle_t output1, 58 audio_io_handle_t output2) 59{ 60 sp<IAudioFlinger> af = AudioSystem::get_audio_flinger(); 61 if (af == 0) { 62 ALOGW("%s: could not get AudioFlinger", __func__); 63 return 0; 64 } 65 return af->openDuplicateOutput(output1, output2); 66} 67 68status_t AudioPolicyService::AudioPolicyClient::closeOutput(audio_io_handle_t output) 69{ 70 sp<IAudioFlinger> af = AudioSystem::get_audio_flinger(); 71 if (af == 0) { 72 return PERMISSION_DENIED; 73 } 74 75 return af->closeOutput(output); 76} 77 78status_t AudioPolicyService::AudioPolicyClient::suspendOutput(audio_io_handle_t output) 79{ 80 sp<IAudioFlinger> af = AudioSystem::get_audio_flinger(); 81 if (af == 0) { 82 ALOGW("%s: could not get AudioFlinger", __func__); 83 return PERMISSION_DENIED; 84 } 85 86 return af->suspendOutput(output); 87} 88 89status_t AudioPolicyService::AudioPolicyClient::restoreOutput(audio_io_handle_t output) 90{ 91 sp<IAudioFlinger> af = AudioSystem::get_audio_flinger(); 92 if (af == 0) { 93 ALOGW("%s: could not get AudioFlinger", __func__); 94 return PERMISSION_DENIED; 95 } 96 97 return af->restoreOutput(output); 98} 99 100audio_io_handle_t AudioPolicyService::AudioPolicyClient::openInput(audio_module_handle_t module, 101 audio_devices_t *pDevices, 102 uint32_t *pSamplingRate, 103 audio_format_t *pFormat, 104 audio_channel_mask_t *pChannelMask, 105 audio_input_flags_t flags) 106{ 107 sp<IAudioFlinger> af = AudioSystem::get_audio_flinger(); 108 if (af == 0) { 109 ALOGW("%s: could not get AudioFlinger", __func__); 110 return 0; 111 } 112 113 return af->openInput(module, pDevices, pSamplingRate, pFormat, pChannelMask, flags); 114} 115 116status_t AudioPolicyService::AudioPolicyClient::closeInput(audio_io_handle_t input) 117{ 118 sp<IAudioFlinger> af = AudioSystem::get_audio_flinger(); 119 if (af == 0) { 120 return PERMISSION_DENIED; 121 } 122 123 return af->closeInput(input); 124} 125 126status_t AudioPolicyService::AudioPolicyClient::setStreamVolume(audio_stream_type_t stream, 127 float volume, audio_io_handle_t output, 128 int delay_ms) 129{ 130 return mAudioPolicyService->setStreamVolume(stream, volume, output, 131 delay_ms); 132} 133 134status_t AudioPolicyService::AudioPolicyClient::invalidateStream(audio_stream_type_t stream) 135{ 136 sp<IAudioFlinger> af = AudioSystem::get_audio_flinger(); 137 if (af == 0) { 138 return PERMISSION_DENIED; 139 } 140 141 return af->invalidateStream(stream); 142} 143 144void AudioPolicyService::AudioPolicyClient::setParameters(audio_io_handle_t io_handle, 145 const String8& keyValuePairs, 146 int delay_ms) 147{ 148 mAudioPolicyService->setParameters(io_handle, keyValuePairs.string(), delay_ms); 149} 150 151String8 AudioPolicyService::AudioPolicyClient::getParameters(audio_io_handle_t io_handle, 152 const String8& keys) 153{ 154 String8 result = AudioSystem::getParameters(io_handle, keys); 155 return result; 156} 157 158status_t AudioPolicyService::AudioPolicyClient::startTone(audio_policy_tone_t tone, 159 audio_stream_type_t stream) 160{ 161 return mAudioPolicyService->startTone(tone, stream); 162} 163 164status_t AudioPolicyService::AudioPolicyClient::stopTone() 165{ 166 return mAudioPolicyService->stopTone(); 167} 168 169status_t AudioPolicyService::AudioPolicyClient::setVoiceVolume(float volume, int delay_ms) 170{ 171 return mAudioPolicyService->setVoiceVolume(volume, delay_ms); 172} 173 174status_t AudioPolicyService::AudioPolicyClient::moveEffects(int session, 175 audio_io_handle_t src_output, 176 audio_io_handle_t dst_output) 177{ 178 sp<IAudioFlinger> af = AudioSystem::get_audio_flinger(); 179 if (af == 0) { 180 return PERMISSION_DENIED; 181 } 182 183 return af->moveEffects(session, src_output, dst_output); 184} 185 186status_t AudioPolicyService::AudioPolicyClient::createAudioPatch(const struct audio_patch *patch, 187 audio_patch_handle_t *handle, 188 int delayMs) 189{ 190 return mAudioPolicyService->clientCreateAudioPatch(patch, handle, delayMs); 191} 192 193status_t AudioPolicyService::AudioPolicyClient::releaseAudioPatch(audio_patch_handle_t handle, 194 int delayMs) 195{ 196 return mAudioPolicyService->clientReleaseAudioPatch(handle, delayMs); 197} 198 199status_t AudioPolicyService::AudioPolicyClient::setAudioPortConfig( 200 const struct audio_port_config *config, 201 int delayMs) 202{ 203 return mAudioPolicyService->clientSetAudioPortConfig(config, delayMs); 204} 205 206void AudioPolicyService::AudioPolicyClient::onAudioPortListUpdate() 207{ 208 mAudioPolicyService->onAudioPortListUpdate(); 209} 210 211void AudioPolicyService::AudioPolicyClient::onAudioPatchListUpdate() 212{ 213 mAudioPolicyService->onAudioPatchListUpdate(); 214} 215 216}; // namespace android 217