• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2016 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 "AGC_Effect_HAL"
18 #include <android/log.h>
19 
20 #include "AutomaticGainControlEffect.h"
21 
22 namespace android {
23 namespace hardware {
24 namespace audio {
25 namespace effect {
26 namespace V2_0 {
27 namespace implementation {
28 
AutomaticGainControlEffect(effect_handle_t handle)29 AutomaticGainControlEffect::AutomaticGainControlEffect(effect_handle_t handle)
30         : mEffect(new Effect(handle)) {
31 }
32 
~AutomaticGainControlEffect()33 AutomaticGainControlEffect::~AutomaticGainControlEffect() {}
34 
propertiesFromHal(const t_agc_settings & halProperties,IAutomaticGainControlEffect::AllProperties * properties)35 void AutomaticGainControlEffect::propertiesFromHal(
36         const t_agc_settings& halProperties,
37         IAutomaticGainControlEffect::AllProperties* properties) {
38     properties->targetLevelMb = halProperties.targetLevel;
39     properties->compGainMb = halProperties.compGain;
40     properties->limiterEnabled = halProperties.limiterEnabled;
41 }
42 
propertiesToHal(const IAutomaticGainControlEffect::AllProperties & properties,t_agc_settings * halProperties)43 void AutomaticGainControlEffect::propertiesToHal(
44         const IAutomaticGainControlEffect::AllProperties& properties,
45         t_agc_settings* halProperties) {
46     halProperties->targetLevel = properties.targetLevelMb;
47     halProperties->compGain = properties.compGainMb;
48     halProperties->limiterEnabled = properties.limiterEnabled;
49 }
50 
51 // Methods from ::android::hardware::audio::effect::V2_0::IEffect follow.
init()52 Return<Result> AutomaticGainControlEffect::init() {
53     return mEffect->init();
54 }
55 
setConfig(const EffectConfig & config,const sp<IEffectBufferProviderCallback> & inputBufferProvider,const sp<IEffectBufferProviderCallback> & outputBufferProvider)56 Return<Result> AutomaticGainControlEffect::setConfig(
57         const EffectConfig& config,
58         const sp<IEffectBufferProviderCallback>& inputBufferProvider,
59         const sp<IEffectBufferProviderCallback>& outputBufferProvider) {
60     return mEffect->setConfig(config, inputBufferProvider, outputBufferProvider);
61 }
62 
reset()63 Return<Result> AutomaticGainControlEffect::reset() {
64     return mEffect->reset();
65 }
66 
enable()67 Return<Result> AutomaticGainControlEffect::enable() {
68     return mEffect->enable();
69 }
70 
disable()71 Return<Result> AutomaticGainControlEffect::disable() {
72     return mEffect->disable();
73 }
74 
setDevice(AudioDevice device)75 Return<Result> AutomaticGainControlEffect::setDevice(AudioDevice device) {
76     return mEffect->setDevice(device);
77 }
78 
setAndGetVolume(const hidl_vec<uint32_t> & volumes,setAndGetVolume_cb _hidl_cb)79 Return<void> AutomaticGainControlEffect::setAndGetVolume(
80         const hidl_vec<uint32_t>& volumes, setAndGetVolume_cb _hidl_cb) {
81     return mEffect->setAndGetVolume(volumes, _hidl_cb);
82 }
83 
volumeChangeNotification(const hidl_vec<uint32_t> & volumes)84 Return<Result> AutomaticGainControlEffect::volumeChangeNotification(
85         const hidl_vec<uint32_t>& volumes) {
86     return mEffect->volumeChangeNotification(volumes);
87 }
88 
setAudioMode(AudioMode mode)89 Return<Result> AutomaticGainControlEffect::setAudioMode(AudioMode mode) {
90     return mEffect->setAudioMode(mode);
91 }
92 
setConfigReverse(const EffectConfig & config,const sp<IEffectBufferProviderCallback> & inputBufferProvider,const sp<IEffectBufferProviderCallback> & outputBufferProvider)93 Return<Result> AutomaticGainControlEffect::setConfigReverse(
94         const EffectConfig& config,
95         const sp<IEffectBufferProviderCallback>& inputBufferProvider,
96         const sp<IEffectBufferProviderCallback>& outputBufferProvider) {
97     return mEffect->setConfigReverse(config, inputBufferProvider, outputBufferProvider);
98 }
99 
setInputDevice(AudioDevice device)100 Return<Result> AutomaticGainControlEffect::setInputDevice(AudioDevice device) {
101     return mEffect->setInputDevice(device);
102 }
103 
getConfig(getConfig_cb _hidl_cb)104 Return<void> AutomaticGainControlEffect::getConfig(getConfig_cb _hidl_cb) {
105     return mEffect->getConfig(_hidl_cb);
106 }
107 
getConfigReverse(getConfigReverse_cb _hidl_cb)108 Return<void> AutomaticGainControlEffect::getConfigReverse(getConfigReverse_cb _hidl_cb) {
109     return mEffect->getConfigReverse(_hidl_cb);
110 }
111 
getSupportedAuxChannelsConfigs(uint32_t maxConfigs,getSupportedAuxChannelsConfigs_cb _hidl_cb)112 Return<void> AutomaticGainControlEffect::getSupportedAuxChannelsConfigs(
113         uint32_t maxConfigs, getSupportedAuxChannelsConfigs_cb _hidl_cb) {
114     return mEffect->getSupportedAuxChannelsConfigs(maxConfigs, _hidl_cb);
115 }
116 
getAuxChannelsConfig(getAuxChannelsConfig_cb _hidl_cb)117 Return<void> AutomaticGainControlEffect::getAuxChannelsConfig(getAuxChannelsConfig_cb _hidl_cb) {
118     return mEffect->getAuxChannelsConfig(_hidl_cb);
119 }
120 
setAuxChannelsConfig(const EffectAuxChannelsConfig & config)121 Return<Result> AutomaticGainControlEffect::setAuxChannelsConfig(
122         const EffectAuxChannelsConfig& config) {
123     return mEffect->setAuxChannelsConfig(config);
124 }
125 
setAudioSource(AudioSource source)126 Return<Result> AutomaticGainControlEffect::setAudioSource(AudioSource source) {
127     return mEffect->setAudioSource(source);
128 }
129 
offload(const EffectOffloadParameter & param)130 Return<Result> AutomaticGainControlEffect::offload(const EffectOffloadParameter& param) {
131     return mEffect->offload(param);
132 }
133 
getDescriptor(getDescriptor_cb _hidl_cb)134 Return<void> AutomaticGainControlEffect::getDescriptor(getDescriptor_cb _hidl_cb) {
135     return mEffect->getDescriptor(_hidl_cb);
136 }
137 
prepareForProcessing(prepareForProcessing_cb _hidl_cb)138 Return<void> AutomaticGainControlEffect::prepareForProcessing(
139         prepareForProcessing_cb _hidl_cb) {
140     return mEffect->prepareForProcessing(_hidl_cb);
141 }
142 
setProcessBuffers(const AudioBuffer & inBuffer,const AudioBuffer & outBuffer)143 Return<Result> AutomaticGainControlEffect::setProcessBuffers(
144         const AudioBuffer& inBuffer, const AudioBuffer& outBuffer) {
145     return mEffect->setProcessBuffers(inBuffer, outBuffer);
146 }
147 
command(uint32_t commandId,const hidl_vec<uint8_t> & data,uint32_t resultMaxSize,command_cb _hidl_cb)148 Return<void> AutomaticGainControlEffect::command(
149         uint32_t commandId,
150         const hidl_vec<uint8_t>& data,
151         uint32_t resultMaxSize,
152         command_cb _hidl_cb) {
153     return mEffect->command(commandId, data, resultMaxSize, _hidl_cb);
154 }
155 
setParameter(const hidl_vec<uint8_t> & parameter,const hidl_vec<uint8_t> & value)156 Return<Result> AutomaticGainControlEffect::setParameter(
157         const hidl_vec<uint8_t>& parameter, const hidl_vec<uint8_t>& value) {
158     return mEffect->setParameter(parameter, value);
159 }
160 
getParameter(const hidl_vec<uint8_t> & parameter,uint32_t valueMaxSize,getParameter_cb _hidl_cb)161 Return<void> AutomaticGainControlEffect::getParameter(
162         const hidl_vec<uint8_t>& parameter,
163         uint32_t valueMaxSize,
164         getParameter_cb _hidl_cb) {
165     return mEffect->getParameter(parameter, valueMaxSize, _hidl_cb);
166 }
167 
getSupportedConfigsForFeature(uint32_t featureId,uint32_t maxConfigs,uint32_t configSize,getSupportedConfigsForFeature_cb _hidl_cb)168 Return<void> AutomaticGainControlEffect::getSupportedConfigsForFeature(
169         uint32_t featureId,
170         uint32_t maxConfigs,
171         uint32_t configSize,
172         getSupportedConfigsForFeature_cb _hidl_cb) {
173     return mEffect->getSupportedConfigsForFeature(featureId, maxConfigs, configSize, _hidl_cb);
174 }
175 
getCurrentConfigForFeature(uint32_t featureId,uint32_t configSize,getCurrentConfigForFeature_cb _hidl_cb)176 Return<void> AutomaticGainControlEffect::getCurrentConfigForFeature(
177         uint32_t featureId,
178         uint32_t configSize,
179         getCurrentConfigForFeature_cb _hidl_cb) {
180     return mEffect->getCurrentConfigForFeature(featureId, configSize, _hidl_cb);
181 }
182 
setCurrentConfigForFeature(uint32_t featureId,const hidl_vec<uint8_t> & configData)183 Return<Result> AutomaticGainControlEffect::setCurrentConfigForFeature(
184         uint32_t featureId, const hidl_vec<uint8_t>& configData) {
185     return mEffect->setCurrentConfigForFeature(featureId, configData);
186 }
187 
close()188 Return<Result> AutomaticGainControlEffect::close() {
189     return mEffect->close();
190 }
191 
192 // Methods from ::android::hardware::audio::effect::V2_0::IAutomaticGainControlEffect follow.
setTargetLevel(int16_t targetLevelMb)193 Return<Result> AutomaticGainControlEffect::setTargetLevel(int16_t targetLevelMb)  {
194     return mEffect->setParam(AGC_PARAM_TARGET_LEVEL, targetLevelMb);
195 }
196 
getTargetLevel(getTargetLevel_cb _hidl_cb)197 Return<void> AutomaticGainControlEffect::getTargetLevel(getTargetLevel_cb _hidl_cb)  {
198     return mEffect->getIntegerParam(AGC_PARAM_TARGET_LEVEL, _hidl_cb);
199 }
200 
setCompGain(int16_t compGainMb)201 Return<Result> AutomaticGainControlEffect::setCompGain(int16_t compGainMb)  {
202     return mEffect->setParam(AGC_PARAM_COMP_GAIN, compGainMb);
203 }
204 
getCompGain(getCompGain_cb _hidl_cb)205 Return<void> AutomaticGainControlEffect::getCompGain(getCompGain_cb _hidl_cb)  {
206     return mEffect->getIntegerParam(AGC_PARAM_COMP_GAIN, _hidl_cb);
207 }
208 
setLimiterEnabled(bool enabled)209 Return<Result> AutomaticGainControlEffect::setLimiterEnabled(bool enabled)  {
210     return mEffect->setParam(AGC_PARAM_LIMITER_ENA, enabled);
211 }
212 
isLimiterEnabled(isLimiterEnabled_cb _hidl_cb)213 Return<void> AutomaticGainControlEffect::isLimiterEnabled(isLimiterEnabled_cb _hidl_cb)  {
214     return mEffect->getIntegerParam(AGC_PARAM_LIMITER_ENA, _hidl_cb);
215 }
216 
setAllProperties(const IAutomaticGainControlEffect::AllProperties & properties)217 Return<Result> AutomaticGainControlEffect::setAllProperties(const IAutomaticGainControlEffect::AllProperties& properties)  {
218     t_agc_settings halProperties;
219     propertiesToHal(properties, &halProperties);
220     return mEffect->setParam(AGC_PARAM_PROPERTIES, halProperties);
221 }
222 
getAllProperties(getAllProperties_cb _hidl_cb)223 Return<void> AutomaticGainControlEffect::getAllProperties(getAllProperties_cb _hidl_cb)  {
224     t_agc_settings halProperties;
225     Result retval = mEffect->getParam(AGC_PARAM_PROPERTIES, halProperties);
226     AllProperties properties;
227     propertiesFromHal(halProperties, &properties);
228     _hidl_cb(retval, properties);
229     return Void();
230 }
231 
232 } // namespace implementation
233 }  // namespace V2_0
234 }  // namespace effect
235 }  // namespace audio
236 }  // namespace hardware
237 }  // namespace android
238