xref: /aosp_15_r20/hardware/interfaces/audio/common/7.0/example/LoudnessEnhancerEffect.h (revision 4d7e907c777eeecc4c5bd7cf640a754fac206ff7)
1*4d7e907cSAndroid Build Coastguard Worker /*
2*4d7e907cSAndroid Build Coastguard Worker  * Copyright (C) 2020 The Android Open Source Project
3*4d7e907cSAndroid Build Coastguard Worker  *
4*4d7e907cSAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*4d7e907cSAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*4d7e907cSAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*4d7e907cSAndroid Build Coastguard Worker  *
8*4d7e907cSAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*4d7e907cSAndroid Build Coastguard Worker  *
10*4d7e907cSAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*4d7e907cSAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*4d7e907cSAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*4d7e907cSAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*4d7e907cSAndroid Build Coastguard Worker  * limitations under the License.
15*4d7e907cSAndroid Build Coastguard Worker  */
16*4d7e907cSAndroid Build Coastguard Worker 
17*4d7e907cSAndroid Build Coastguard Worker #pragma once
18*4d7e907cSAndroid Build Coastguard Worker 
19*4d7e907cSAndroid Build Coastguard Worker #include <android/hardware/audio/effect/7.0/ILoudnessEnhancerEffect.h>
20*4d7e907cSAndroid Build Coastguard Worker 
21*4d7e907cSAndroid Build Coastguard Worker #include "Effect.h"
22*4d7e907cSAndroid Build Coastguard Worker 
23*4d7e907cSAndroid Build Coastguard Worker namespace android::hardware::audio::effect::V7_0::implementation {
24*4d7e907cSAndroid Build Coastguard Worker 
25*4d7e907cSAndroid Build Coastguard Worker class LoudnessEnhancerEffect : public ILoudnessEnhancerEffect {
26*4d7e907cSAndroid Build Coastguard Worker   public:
27*4d7e907cSAndroid Build Coastguard Worker     static const EffectDescriptor& getDescriptor();
28*4d7e907cSAndroid Build Coastguard Worker 
29*4d7e907cSAndroid Build Coastguard Worker     LoudnessEnhancerEffect();
30*4d7e907cSAndroid Build Coastguard Worker 
31*4d7e907cSAndroid Build Coastguard Worker     // Methods from IEffect interface.
init()32*4d7e907cSAndroid Build Coastguard Worker     ::android::hardware::Return<Result> init() override { return mEffect->init(); }
setConfig(const EffectConfig & config,const::android::sp<IEffectBufferProviderCallback> & inputBufferProvider,const::android::sp<IEffectBufferProviderCallback> & outputBufferProvider)33*4d7e907cSAndroid Build Coastguard Worker     ::android::hardware::Return<Result> setConfig(
34*4d7e907cSAndroid Build Coastguard Worker             const EffectConfig& config,
35*4d7e907cSAndroid Build Coastguard Worker             const ::android::sp<IEffectBufferProviderCallback>& inputBufferProvider,
36*4d7e907cSAndroid Build Coastguard Worker             const ::android::sp<IEffectBufferProviderCallback>& outputBufferProvider) override {
37*4d7e907cSAndroid Build Coastguard Worker         return mEffect->setConfig(config, inputBufferProvider, outputBufferProvider);
38*4d7e907cSAndroid Build Coastguard Worker     }
reset()39*4d7e907cSAndroid Build Coastguard Worker     ::android::hardware::Return<Result> reset() override { return mEffect->reset(); }
enable()40*4d7e907cSAndroid Build Coastguard Worker     ::android::hardware::Return<Result> enable() override { return mEffect->enable(); }
disable()41*4d7e907cSAndroid Build Coastguard Worker     ::android::hardware::Return<Result> disable() override { return mEffect->disable(); }
setDevice(const::android::hardware::audio::common::V7_0::DeviceAddress & device)42*4d7e907cSAndroid Build Coastguard Worker     ::android::hardware::Return<Result> setDevice(
43*4d7e907cSAndroid Build Coastguard Worker             const ::android::hardware::audio::common::V7_0::DeviceAddress& device) override {
44*4d7e907cSAndroid Build Coastguard Worker         return mEffect->setDevice(device);
45*4d7e907cSAndroid Build Coastguard Worker     }
setAndGetVolume(const::android::hardware::hidl_vec<uint32_t> & volumes,setAndGetVolume_cb _hidl_cb)46*4d7e907cSAndroid Build Coastguard Worker     ::android::hardware::Return<void> setAndGetVolume(
47*4d7e907cSAndroid Build Coastguard Worker             const ::android::hardware::hidl_vec<uint32_t>& volumes,
48*4d7e907cSAndroid Build Coastguard Worker             setAndGetVolume_cb _hidl_cb) override {
49*4d7e907cSAndroid Build Coastguard Worker         return mEffect->setAndGetVolume(volumes, _hidl_cb);
50*4d7e907cSAndroid Build Coastguard Worker     }
volumeChangeNotification(const::android::hardware::hidl_vec<uint32_t> & volumes)51*4d7e907cSAndroid Build Coastguard Worker     ::android::hardware::Return<Result> volumeChangeNotification(
52*4d7e907cSAndroid Build Coastguard Worker             const ::android::hardware::hidl_vec<uint32_t>& volumes) override {
53*4d7e907cSAndroid Build Coastguard Worker         return mEffect->volumeChangeNotification(volumes);
54*4d7e907cSAndroid Build Coastguard Worker     }
setAudioMode(::android::hardware::audio::common::V7_0::AudioMode mode)55*4d7e907cSAndroid Build Coastguard Worker     ::android::hardware::Return<Result> setAudioMode(
56*4d7e907cSAndroid Build Coastguard Worker             ::android::hardware::audio::common::V7_0::AudioMode mode) override {
57*4d7e907cSAndroid Build Coastguard Worker         return mEffect->setAudioMode(mode);
58*4d7e907cSAndroid Build Coastguard Worker     }
setConfigReverse(const EffectConfig & config,const::android::sp<IEffectBufferProviderCallback> & inputBufferProvider,const::android::sp<IEffectBufferProviderCallback> & outputBufferProvider)59*4d7e907cSAndroid Build Coastguard Worker     ::android::hardware::Return<Result> setConfigReverse(
60*4d7e907cSAndroid Build Coastguard Worker             const EffectConfig& config,
61*4d7e907cSAndroid Build Coastguard Worker             const ::android::sp<IEffectBufferProviderCallback>& inputBufferProvider,
62*4d7e907cSAndroid Build Coastguard Worker             const ::android::sp<IEffectBufferProviderCallback>& outputBufferProvider) override {
63*4d7e907cSAndroid Build Coastguard Worker         return mEffect->setConfigReverse(config, inputBufferProvider, outputBufferProvider);
64*4d7e907cSAndroid Build Coastguard Worker     }
setInputDevice(const::android::hardware::audio::common::V7_0::DeviceAddress & device)65*4d7e907cSAndroid Build Coastguard Worker     ::android::hardware::Return<Result> setInputDevice(
66*4d7e907cSAndroid Build Coastguard Worker             const ::android::hardware::audio::common::V7_0::DeviceAddress& device) override {
67*4d7e907cSAndroid Build Coastguard Worker         return mEffect->setInputDevice(device);
68*4d7e907cSAndroid Build Coastguard Worker     }
getConfig(getConfig_cb _hidl_cb)69*4d7e907cSAndroid Build Coastguard Worker     ::android::hardware::Return<void> getConfig(getConfig_cb _hidl_cb) override {
70*4d7e907cSAndroid Build Coastguard Worker         return mEffect->getConfig(_hidl_cb);
71*4d7e907cSAndroid Build Coastguard Worker     }
getConfigReverse(getConfigReverse_cb _hidl_cb)72*4d7e907cSAndroid Build Coastguard Worker     ::android::hardware::Return<void> getConfigReverse(getConfigReverse_cb _hidl_cb) override {
73*4d7e907cSAndroid Build Coastguard Worker         return mEffect->getConfigReverse(_hidl_cb);
74*4d7e907cSAndroid Build Coastguard Worker     }
getSupportedAuxChannelsConfigs(uint32_t maxConfigs,getSupportedAuxChannelsConfigs_cb _hidl_cb)75*4d7e907cSAndroid Build Coastguard Worker     ::android::hardware::Return<void> getSupportedAuxChannelsConfigs(
76*4d7e907cSAndroid Build Coastguard Worker             uint32_t maxConfigs, getSupportedAuxChannelsConfigs_cb _hidl_cb) override {
77*4d7e907cSAndroid Build Coastguard Worker         return mEffect->getSupportedAuxChannelsConfigs(maxConfigs, _hidl_cb);
78*4d7e907cSAndroid Build Coastguard Worker     }
getAuxChannelsConfig(getAuxChannelsConfig_cb _hidl_cb)79*4d7e907cSAndroid Build Coastguard Worker     ::android::hardware::Return<void> getAuxChannelsConfig(
80*4d7e907cSAndroid Build Coastguard Worker             getAuxChannelsConfig_cb _hidl_cb) override {
81*4d7e907cSAndroid Build Coastguard Worker         return mEffect->getAuxChannelsConfig(_hidl_cb);
82*4d7e907cSAndroid Build Coastguard Worker     }
setAuxChannelsConfig(const EffectAuxChannelsConfig & config)83*4d7e907cSAndroid Build Coastguard Worker     ::android::hardware::Return<Result> setAuxChannelsConfig(
84*4d7e907cSAndroid Build Coastguard Worker             const EffectAuxChannelsConfig& config) override {
85*4d7e907cSAndroid Build Coastguard Worker         return mEffect->setAuxChannelsConfig(config);
86*4d7e907cSAndroid Build Coastguard Worker     }
setAudioSource(const::android::hardware::hidl_string & source)87*4d7e907cSAndroid Build Coastguard Worker     ::android::hardware::Return<Result> setAudioSource(
88*4d7e907cSAndroid Build Coastguard Worker             const ::android::hardware::hidl_string& source) override {
89*4d7e907cSAndroid Build Coastguard Worker         return mEffect->setAudioSource(source);
90*4d7e907cSAndroid Build Coastguard Worker     }
offload(const EffectOffloadParameter & param)91*4d7e907cSAndroid Build Coastguard Worker     ::android::hardware::Return<Result> offload(const EffectOffloadParameter& param) override {
92*4d7e907cSAndroid Build Coastguard Worker         return mEffect->offload(param);
93*4d7e907cSAndroid Build Coastguard Worker     }
getDescriptor(getDescriptor_cb _hidl_cb)94*4d7e907cSAndroid Build Coastguard Worker     ::android::hardware::Return<void> getDescriptor(getDescriptor_cb _hidl_cb) override {
95*4d7e907cSAndroid Build Coastguard Worker         return mEffect->getDescriptor(_hidl_cb);
96*4d7e907cSAndroid Build Coastguard Worker     }
prepareForProcessing(prepareForProcessing_cb _hidl_cb)97*4d7e907cSAndroid Build Coastguard Worker     ::android::hardware::Return<void> prepareForProcessing(
98*4d7e907cSAndroid Build Coastguard Worker             prepareForProcessing_cb _hidl_cb) override {
99*4d7e907cSAndroid Build Coastguard Worker         return mEffect->prepareForProcessing(_hidl_cb);
100*4d7e907cSAndroid Build Coastguard Worker     }
setProcessBuffers(const AudioBuffer & inBuffer,const AudioBuffer & outBuffer)101*4d7e907cSAndroid Build Coastguard Worker     ::android::hardware::Return<Result> setProcessBuffers(const AudioBuffer& inBuffer,
102*4d7e907cSAndroid Build Coastguard Worker                                                           const AudioBuffer& outBuffer) override {
103*4d7e907cSAndroid Build Coastguard Worker         return mEffect->setProcessBuffers(inBuffer, outBuffer);
104*4d7e907cSAndroid Build Coastguard Worker     }
command(uint32_t commandId,const::android::hardware::hidl_vec<uint8_t> & data,uint32_t resultMaxSize,command_cb _hidl_cb)105*4d7e907cSAndroid Build Coastguard Worker     ::android::hardware::Return<void> command(uint32_t commandId,
106*4d7e907cSAndroid Build Coastguard Worker                                               const ::android::hardware::hidl_vec<uint8_t>& data,
107*4d7e907cSAndroid Build Coastguard Worker                                               uint32_t resultMaxSize,
108*4d7e907cSAndroid Build Coastguard Worker                                               command_cb _hidl_cb) override {
109*4d7e907cSAndroid Build Coastguard Worker         return mEffect->command(commandId, data, resultMaxSize, _hidl_cb);
110*4d7e907cSAndroid Build Coastguard Worker     }
setParameter(const::android::hardware::hidl_vec<uint8_t> & parameter,const::android::hardware::hidl_vec<uint8_t> & value)111*4d7e907cSAndroid Build Coastguard Worker     ::android::hardware::Return<Result> setParameter(
112*4d7e907cSAndroid Build Coastguard Worker             const ::android::hardware::hidl_vec<uint8_t>& parameter,
113*4d7e907cSAndroid Build Coastguard Worker             const ::android::hardware::hidl_vec<uint8_t>& value) override {
114*4d7e907cSAndroid Build Coastguard Worker         return mEffect->setParameter(parameter, value);
115*4d7e907cSAndroid Build Coastguard Worker     }
getParameter(const::android::hardware::hidl_vec<uint8_t> & parameter,uint32_t valueMaxSize,getParameter_cb _hidl_cb)116*4d7e907cSAndroid Build Coastguard Worker     ::android::hardware::Return<void> getParameter(
117*4d7e907cSAndroid Build Coastguard Worker             const ::android::hardware::hidl_vec<uint8_t>& parameter, uint32_t valueMaxSize,
118*4d7e907cSAndroid Build Coastguard Worker             getParameter_cb _hidl_cb) override {
119*4d7e907cSAndroid Build Coastguard Worker         return mEffect->getParameter(parameter, valueMaxSize, _hidl_cb);
120*4d7e907cSAndroid Build Coastguard Worker     }
getSupportedConfigsForFeature(uint32_t featureId,uint32_t maxConfigs,uint32_t configSize,getSupportedConfigsForFeature_cb _hidl_cb)121*4d7e907cSAndroid Build Coastguard Worker     ::android::hardware::Return<void> getSupportedConfigsForFeature(
122*4d7e907cSAndroid Build Coastguard Worker             uint32_t featureId, uint32_t maxConfigs, uint32_t configSize,
123*4d7e907cSAndroid Build Coastguard Worker             getSupportedConfigsForFeature_cb _hidl_cb) override {
124*4d7e907cSAndroid Build Coastguard Worker         return mEffect->getSupportedConfigsForFeature(featureId, maxConfigs, configSize, _hidl_cb);
125*4d7e907cSAndroid Build Coastguard Worker     }
getCurrentConfigForFeature(uint32_t featureId,uint32_t configSize,getCurrentConfigForFeature_cb _hidl_cb)126*4d7e907cSAndroid Build Coastguard Worker     ::android::hardware::Return<void> getCurrentConfigForFeature(
127*4d7e907cSAndroid Build Coastguard Worker             uint32_t featureId, uint32_t configSize,
128*4d7e907cSAndroid Build Coastguard Worker             getCurrentConfigForFeature_cb _hidl_cb) override {
129*4d7e907cSAndroid Build Coastguard Worker         return mEffect->getCurrentConfigForFeature(featureId, configSize, _hidl_cb);
130*4d7e907cSAndroid Build Coastguard Worker     }
setCurrentConfigForFeature(uint32_t featureId,const::android::hardware::hidl_vec<uint8_t> & configData)131*4d7e907cSAndroid Build Coastguard Worker     ::android::hardware::Return<Result> setCurrentConfigForFeature(
132*4d7e907cSAndroid Build Coastguard Worker             uint32_t featureId, const ::android::hardware::hidl_vec<uint8_t>& configData) override {
133*4d7e907cSAndroid Build Coastguard Worker         return mEffect->setCurrentConfigForFeature(featureId, configData);
134*4d7e907cSAndroid Build Coastguard Worker     }
close()135*4d7e907cSAndroid Build Coastguard Worker     ::android::hardware::Return<Result> close() override { return mEffect->close(); }
136*4d7e907cSAndroid Build Coastguard Worker 
137*4d7e907cSAndroid Build Coastguard Worker     // Methods from ILoudnessEnhancerEffect interface.
138*4d7e907cSAndroid Build Coastguard Worker     ::android::hardware::Return<Result> setTargetGain(int32_t targetGainMb) override;
139*4d7e907cSAndroid Build Coastguard Worker     ::android::hardware::Return<void> getTargetGain(getTargetGain_cb _hidl_cb) override;
140*4d7e907cSAndroid Build Coastguard Worker 
141*4d7e907cSAndroid Build Coastguard Worker   private:
142*4d7e907cSAndroid Build Coastguard Worker     sp<Effect> mEffect;
143*4d7e907cSAndroid Build Coastguard Worker     int32_t mTargetGainMb = 0;
144*4d7e907cSAndroid Build Coastguard Worker };
145*4d7e907cSAndroid Build Coastguard Worker 
146*4d7e907cSAndroid Build Coastguard Worker }  // namespace android::hardware::audio::effect::V7_0::implementation
147