blob: 382a4bced7967e5019876917dd525cbacf2e9b03 [file] [log] [blame]
Mikhail Naganov7cbf2f12016-10-27 20:05:35 -07001/*
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"
Yifan Hongf9d30342016-11-30 13:45:34 -080018#include <android/log.h>
Mikhail Naganov7cbf2f12016-10-27 20:05:35 -070019
20#include "AutomaticGainControlEffect.h"
21
22namespace android {
23namespace hardware {
24namespace audio {
25namespace effect {
26namespace V2_0 {
27namespace implementation {
28
29AutomaticGainControlEffect::AutomaticGainControlEffect(effect_handle_t handle)
Kevin Rocard22505e62017-12-14 18:50:12 -080030 : mEffect(new Effect(handle)) {}
Mikhail Naganov7cbf2f12016-10-27 20:05:35 -070031
32AutomaticGainControlEffect::~AutomaticGainControlEffect() {}
33
34void AutomaticGainControlEffect::propertiesFromHal(
Kevin Rocard22505e62017-12-14 18:50:12 -080035 const t_agc_settings& halProperties, IAutomaticGainControlEffect::AllProperties* properties) {
Mikhail Naganov7cbf2f12016-10-27 20:05:35 -070036 properties->targetLevelMb = halProperties.targetLevel;
37 properties->compGainMb = halProperties.compGain;
38 properties->limiterEnabled = halProperties.limiterEnabled;
39}
40
41void AutomaticGainControlEffect::propertiesToHal(
Kevin Rocard22505e62017-12-14 18:50:12 -080042 const IAutomaticGainControlEffect::AllProperties& properties, t_agc_settings* halProperties) {
Mikhail Naganov7cbf2f12016-10-27 20:05:35 -070043 halProperties->targetLevel = properties.targetLevelMb;
44 halProperties->compGain = properties.compGainMb;
45 halProperties->limiterEnabled = properties.limiterEnabled;
46}
47
48// Methods from ::android::hardware::audio::effect::V2_0::IEffect follow.
49Return<Result> AutomaticGainControlEffect::init() {
50 return mEffect->init();
51}
52
53Return<Result> AutomaticGainControlEffect::setConfig(
Kevin Rocard22505e62017-12-14 18:50:12 -080054 const EffectConfig& config, const sp<IEffectBufferProviderCallback>& inputBufferProvider,
55 const sp<IEffectBufferProviderCallback>& outputBufferProvider) {
Mikhail Naganov7cbf2f12016-10-27 20:05:35 -070056 return mEffect->setConfig(config, inputBufferProvider, outputBufferProvider);
57}
58
59Return<Result> AutomaticGainControlEffect::reset() {
60 return mEffect->reset();
61}
62
63Return<Result> AutomaticGainControlEffect::enable() {
64 return mEffect->enable();
65}
66
67Return<Result> AutomaticGainControlEffect::disable() {
68 return mEffect->disable();
69}
70
71Return<Result> AutomaticGainControlEffect::setDevice(AudioDevice device) {
72 return mEffect->setDevice(device);
73}
74
Kevin Rocard22505e62017-12-14 18:50:12 -080075Return<void> AutomaticGainControlEffect::setAndGetVolume(const hidl_vec<uint32_t>& volumes,
76 setAndGetVolume_cb _hidl_cb) {
Mikhail Naganov7cbf2f12016-10-27 20:05:35 -070077 return mEffect->setAndGetVolume(volumes, _hidl_cb);
78}
79
Mikhail Naganovf4f2ff32017-01-19 12:38:39 -080080Return<Result> AutomaticGainControlEffect::volumeChangeNotification(
Kevin Rocard22505e62017-12-14 18:50:12 -080081 const hidl_vec<uint32_t>& volumes) {
Mikhail Naganovf4f2ff32017-01-19 12:38:39 -080082 return mEffect->volumeChangeNotification(volumes);
83}
84
Mikhail Naganov7cbf2f12016-10-27 20:05:35 -070085Return<Result> AutomaticGainControlEffect::setAudioMode(AudioMode mode) {
86 return mEffect->setAudioMode(mode);
87}
88
89Return<Result> AutomaticGainControlEffect::setConfigReverse(
Kevin Rocard22505e62017-12-14 18:50:12 -080090 const EffectConfig& config, const sp<IEffectBufferProviderCallback>& inputBufferProvider,
91 const sp<IEffectBufferProviderCallback>& outputBufferProvider) {
Mikhail Naganov7cbf2f12016-10-27 20:05:35 -070092 return mEffect->setConfigReverse(config, inputBufferProvider, outputBufferProvider);
93}
94
95Return<Result> AutomaticGainControlEffect::setInputDevice(AudioDevice device) {
96 return mEffect->setInputDevice(device);
97}
98
99Return<void> AutomaticGainControlEffect::getConfig(getConfig_cb _hidl_cb) {
100 return mEffect->getConfig(_hidl_cb);
101}
102
103Return<void> AutomaticGainControlEffect::getConfigReverse(getConfigReverse_cb _hidl_cb) {
104 return mEffect->getConfigReverse(_hidl_cb);
105}
106
107Return<void> AutomaticGainControlEffect::getSupportedAuxChannelsConfigs(
Kevin Rocard22505e62017-12-14 18:50:12 -0800108 uint32_t maxConfigs, getSupportedAuxChannelsConfigs_cb _hidl_cb) {
Mikhail Naganov7cbf2f12016-10-27 20:05:35 -0700109 return mEffect->getSupportedAuxChannelsConfigs(maxConfigs, _hidl_cb);
110}
111
112Return<void> AutomaticGainControlEffect::getAuxChannelsConfig(getAuxChannelsConfig_cb _hidl_cb) {
113 return mEffect->getAuxChannelsConfig(_hidl_cb);
114}
115
116Return<Result> AutomaticGainControlEffect::setAuxChannelsConfig(
Kevin Rocard22505e62017-12-14 18:50:12 -0800117 const EffectAuxChannelsConfig& config) {
Mikhail Naganov7cbf2f12016-10-27 20:05:35 -0700118 return mEffect->setAuxChannelsConfig(config);
119}
120
121Return<Result> AutomaticGainControlEffect::setAudioSource(AudioSource source) {
122 return mEffect->setAudioSource(source);
123}
124
125Return<Result> AutomaticGainControlEffect::offload(const EffectOffloadParameter& param) {
126 return mEffect->offload(param);
127}
128
129Return<void> AutomaticGainControlEffect::getDescriptor(getDescriptor_cb _hidl_cb) {
130 return mEffect->getDescriptor(_hidl_cb);
131}
132
Kevin Rocard22505e62017-12-14 18:50:12 -0800133Return<void> AutomaticGainControlEffect::prepareForProcessing(prepareForProcessing_cb _hidl_cb) {
Mikhail Naganova331de12017-01-04 16:33:55 -0800134 return mEffect->prepareForProcessing(_hidl_cb);
Mikhail Naganov7cbf2f12016-10-27 20:05:35 -0700135}
136
Kevin Rocard22505e62017-12-14 18:50:12 -0800137Return<Result> AutomaticGainControlEffect::setProcessBuffers(const AudioBuffer& inBuffer,
138 const AudioBuffer& outBuffer) {
Mikhail Naganova331de12017-01-04 16:33:55 -0800139 return mEffect->setProcessBuffers(inBuffer, outBuffer);
Mikhail Naganov7cbf2f12016-10-27 20:05:35 -0700140}
141
Kevin Rocard22505e62017-12-14 18:50:12 -0800142Return<void> AutomaticGainControlEffect::command(uint32_t commandId, const hidl_vec<uint8_t>& data,
143 uint32_t resultMaxSize, command_cb _hidl_cb) {
Mikhail Naganov7cbf2f12016-10-27 20:05:35 -0700144 return mEffect->command(commandId, data, resultMaxSize, _hidl_cb);
145}
146
Kevin Rocard22505e62017-12-14 18:50:12 -0800147Return<Result> AutomaticGainControlEffect::setParameter(const hidl_vec<uint8_t>& parameter,
148 const hidl_vec<uint8_t>& value) {
Mikhail Naganov7cbf2f12016-10-27 20:05:35 -0700149 return mEffect->setParameter(parameter, value);
150}
151
Kevin Rocard22505e62017-12-14 18:50:12 -0800152Return<void> AutomaticGainControlEffect::getParameter(const hidl_vec<uint8_t>& parameter,
153 uint32_t valueMaxSize,
154 getParameter_cb _hidl_cb) {
Mikhail Naganov7cbf2f12016-10-27 20:05:35 -0700155 return mEffect->getParameter(parameter, valueMaxSize, _hidl_cb);
156}
157
158Return<void> AutomaticGainControlEffect::getSupportedConfigsForFeature(
Kevin Rocard22505e62017-12-14 18:50:12 -0800159 uint32_t featureId, uint32_t maxConfigs, uint32_t configSize,
160 getSupportedConfigsForFeature_cb _hidl_cb) {
Mikhail Naganov7cbf2f12016-10-27 20:05:35 -0700161 return mEffect->getSupportedConfigsForFeature(featureId, maxConfigs, configSize, _hidl_cb);
162}
163
164Return<void> AutomaticGainControlEffect::getCurrentConfigForFeature(
Kevin Rocard22505e62017-12-14 18:50:12 -0800165 uint32_t featureId, uint32_t configSize, getCurrentConfigForFeature_cb _hidl_cb) {
Mikhail Naganov7cbf2f12016-10-27 20:05:35 -0700166 return mEffect->getCurrentConfigForFeature(featureId, configSize, _hidl_cb);
167}
168
169Return<Result> AutomaticGainControlEffect::setCurrentConfigForFeature(
Kevin Rocard22505e62017-12-14 18:50:12 -0800170 uint32_t featureId, const hidl_vec<uint8_t>& configData) {
Mikhail Naganov7cbf2f12016-10-27 20:05:35 -0700171 return mEffect->setCurrentConfigForFeature(featureId, configData);
172}
173
Mikhail Naganova331de12017-01-04 16:33:55 -0800174Return<Result> AutomaticGainControlEffect::close() {
175 return mEffect->close();
176}
177
Mikhail Naganov7cbf2f12016-10-27 20:05:35 -0700178// Methods from ::android::hardware::audio::effect::V2_0::IAutomaticGainControlEffect follow.
Kevin Rocard22505e62017-12-14 18:50:12 -0800179Return<Result> AutomaticGainControlEffect::setTargetLevel(int16_t targetLevelMb) {
Mikhail Naganov7cbf2f12016-10-27 20:05:35 -0700180 return mEffect->setParam(AGC_PARAM_TARGET_LEVEL, targetLevelMb);
181}
182
Kevin Rocard22505e62017-12-14 18:50:12 -0800183Return<void> AutomaticGainControlEffect::getTargetLevel(getTargetLevel_cb _hidl_cb) {
Mikhail Naganov7cbf2f12016-10-27 20:05:35 -0700184 return mEffect->getIntegerParam(AGC_PARAM_TARGET_LEVEL, _hidl_cb);
185}
186
Kevin Rocard22505e62017-12-14 18:50:12 -0800187Return<Result> AutomaticGainControlEffect::setCompGain(int16_t compGainMb) {
Mikhail Naganov7cbf2f12016-10-27 20:05:35 -0700188 return mEffect->setParam(AGC_PARAM_COMP_GAIN, compGainMb);
189}
190
Kevin Rocard22505e62017-12-14 18:50:12 -0800191Return<void> AutomaticGainControlEffect::getCompGain(getCompGain_cb _hidl_cb) {
Mikhail Naganov7cbf2f12016-10-27 20:05:35 -0700192 return mEffect->getIntegerParam(AGC_PARAM_COMP_GAIN, _hidl_cb);
193}
194
Kevin Rocard22505e62017-12-14 18:50:12 -0800195Return<Result> AutomaticGainControlEffect::setLimiterEnabled(bool enabled) {
Mikhail Naganov7cbf2f12016-10-27 20:05:35 -0700196 return mEffect->setParam(AGC_PARAM_LIMITER_ENA, enabled);
197}
198
Kevin Rocard22505e62017-12-14 18:50:12 -0800199Return<void> AutomaticGainControlEffect::isLimiterEnabled(isLimiterEnabled_cb _hidl_cb) {
Mikhail Naganov7cbf2f12016-10-27 20:05:35 -0700200 return mEffect->getIntegerParam(AGC_PARAM_LIMITER_ENA, _hidl_cb);
201}
202
Kevin Rocard22505e62017-12-14 18:50:12 -0800203Return<Result> AutomaticGainControlEffect::setAllProperties(
204 const IAutomaticGainControlEffect::AllProperties& properties) {
Mikhail Naganov7cbf2f12016-10-27 20:05:35 -0700205 t_agc_settings halProperties;
206 propertiesToHal(properties, &halProperties);
207 return mEffect->setParam(AGC_PARAM_PROPERTIES, halProperties);
208}
209
Kevin Rocard22505e62017-12-14 18:50:12 -0800210Return<void> AutomaticGainControlEffect::getAllProperties(getAllProperties_cb _hidl_cb) {
Mikhail Naganov7cbf2f12016-10-27 20:05:35 -0700211 t_agc_settings halProperties;
212 Result retval = mEffect->getParam(AGC_PARAM_PROPERTIES, halProperties);
213 AllProperties properties;
214 propertiesFromHal(halProperties, &properties);
215 _hidl_cb(retval, properties);
216 return Void();
217}
218
Kevin Rocard22505e62017-12-14 18:50:12 -0800219} // namespace implementation
Mikhail Naganov7cbf2f12016-10-27 20:05:35 -0700220} // namespace V2_0
221} // namespace effect
222} // namespace audio
223} // namespace hardware
224} // namespace android