1 /*
2 * Copyright (C) 2011 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 "AudioPolicyCompatClient"
18 //#define LOG_NDEBUG 0
19
20 #include <stdint.h>
21
22 #include <hardware/hardware.h>
23 #include <system/audio.h>
24 #include <system/audio_policy.h>
25 #include <hardware/audio_policy.h>
26
27 #include <hardware_legacy/AudioSystemLegacy.h>
28
29 #include "AudioPolicyCompatClient.h"
30
31 namespace android_audio_legacy {
32
loadHwModule(const char * moduleName)33 audio_module_handle_t AudioPolicyCompatClient::loadHwModule(const char *moduleName)
34 {
35 return mServiceOps->load_hw_module(mService, moduleName);
36 }
37
openOutput(audio_module_handle_t module,audio_devices_t * pDevices,uint32_t * pSamplingRate,audio_format_t * pFormat,audio_channel_mask_t * pChannelMask,uint32_t * pLatencyMs,audio_output_flags_t flags)38 audio_io_handle_t AudioPolicyCompatClient::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 {
46 return mServiceOps->open_output_on_module(mService, module, pDevices, pSamplingRate,
47 pFormat, pChannelMask, pLatencyMs,
48 flags);
49 }
50
openDuplicateOutput(audio_io_handle_t output1,audio_io_handle_t output2)51 audio_io_handle_t AudioPolicyCompatClient::openDuplicateOutput(audio_io_handle_t output1,
52 audio_io_handle_t output2)
53 {
54 return mServiceOps->open_duplicate_output(mService, output1, output2);
55 }
56
closeOutput(audio_io_handle_t output)57 status_t AudioPolicyCompatClient::closeOutput(audio_io_handle_t output)
58 {
59 return mServiceOps->close_output(mService, output);
60 }
61
suspendOutput(audio_io_handle_t output)62 status_t AudioPolicyCompatClient::suspendOutput(audio_io_handle_t output)
63 {
64 return mServiceOps->suspend_output(mService, output);
65 }
66
restoreOutput(audio_io_handle_t output)67 status_t AudioPolicyCompatClient::restoreOutput(audio_io_handle_t output)
68 {
69 return mServiceOps->restore_output(mService, output);
70 }
71
openInput(audio_module_handle_t module,audio_devices_t * pDevices,uint32_t * pSamplingRate,audio_format_t * pFormat,audio_channel_mask_t * pChannelMask)72 audio_io_handle_t AudioPolicyCompatClient::openInput(audio_module_handle_t module,
73 audio_devices_t *pDevices,
74 uint32_t *pSamplingRate,
75 audio_format_t *pFormat,
76 audio_channel_mask_t *pChannelMask)
77 {
78 return mServiceOps->open_input_on_module(mService, module, pDevices,
79 pSamplingRate, pFormat, pChannelMask);
80 }
81
closeInput(audio_io_handle_t input)82 status_t AudioPolicyCompatClient::closeInput(audio_io_handle_t input)
83 {
84 return mServiceOps->close_input(mService, input);
85 }
86
setStreamOutput(AudioSystem::stream_type stream,audio_io_handle_t output)87 status_t AudioPolicyCompatClient::setStreamOutput(AudioSystem::stream_type stream,
88 audio_io_handle_t output)
89 {
90 return mServiceOps->set_stream_output(mService, (audio_stream_type_t)stream,
91 output);
92 }
93
moveEffects(int session,audio_io_handle_t srcOutput,audio_io_handle_t dstOutput)94 status_t AudioPolicyCompatClient::moveEffects(int session, audio_io_handle_t srcOutput,
95 audio_io_handle_t dstOutput)
96 {
97 return mServiceOps->move_effects(mService, session, srcOutput, dstOutput);
98 }
99
getParameters(audio_io_handle_t ioHandle,const String8 & keys)100 String8 AudioPolicyCompatClient::getParameters(audio_io_handle_t ioHandle, const String8& keys)
101 {
102 char *str;
103 String8 out_str8;
104
105 str = mServiceOps->get_parameters(mService, ioHandle, keys.string());
106 out_str8 = String8(str);
107 free(str);
108
109 return out_str8;
110 }
111
setParameters(audio_io_handle_t ioHandle,const String8 & keyValuePairs,int delayMs)112 void AudioPolicyCompatClient::setParameters(audio_io_handle_t ioHandle,
113 const String8& keyValuePairs,
114 int delayMs)
115 {
116 mServiceOps->set_parameters(mService, ioHandle, keyValuePairs.string(),
117 delayMs);
118 }
119
setStreamVolume(AudioSystem::stream_type stream,float volume,audio_io_handle_t output,int delayMs)120 status_t AudioPolicyCompatClient::setStreamVolume(
121 AudioSystem::stream_type stream,
122 float volume,
123 audio_io_handle_t output,
124 int delayMs)
125 {
126 return mServiceOps->set_stream_volume(mService, (audio_stream_type_t)stream,
127 volume, output, delayMs);
128 }
129
startTone(ToneGenerator::tone_type tone,AudioSystem::stream_type stream)130 status_t AudioPolicyCompatClient::startTone(ToneGenerator::tone_type tone,
131 AudioSystem::stream_type stream)
132 {
133 return mServiceOps->start_tone(mService,
134 AUDIO_POLICY_TONE_IN_CALL_NOTIFICATION,
135 (audio_stream_type_t)stream);
136 }
137
stopTone()138 status_t AudioPolicyCompatClient::stopTone()
139 {
140 return mServiceOps->stop_tone(mService);
141 }
142
setVoiceVolume(float volume,int delayMs)143 status_t AudioPolicyCompatClient::setVoiceVolume(float volume, int delayMs)
144 {
145 return mServiceOps->set_voice_volume(mService, volume, delayMs);
146 }
147
148 }; // namespace android_audio_legacy
149