17cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov/* 27cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov * Copyright (C) 2016 The Android Open Source Project 37cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov * 47cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov * Licensed under the Apache License, Version 2.0 (the "License"); 57cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov * you may not use this file except in compliance with the License. 67cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov * You may obtain a copy of the License at 77cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov * 87cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov * http://www.apache.org/licenses/LICENSE-2.0 97cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov * 107cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov * Unless required by applicable law or agreed to in writing, software 117cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov * distributed under the License is distributed on an "AS IS" BASIS, 127cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov * See the License for the specific language governing permissions and 147cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov * limitations under the License. 157cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov */ 167cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov 17d6e4f03acf5fa1e76b75e33af7a26f248a92be9aSteven Moreland#ifndef ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_AUTOMATICGAINCONTROLEFFECT_H 18d6e4f03acf5fa1e76b75e33af7a26f248a92be9aSteven Moreland#define ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_AUTOMATICGAINCONTROLEFFECT_H 197cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov 207cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov#include <system/audio_effects/effect_agc.h> 217cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov 227cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov#include <android/hardware/audio/effect/2.0/IAutomaticGainControlEffect.h> 237cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov#include <hidl/Status.h> 247cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov 257cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov#include <hidl/MQDescriptor.h> 267cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov 277cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov#include "Effect.h" 287cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov 297cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovnamespace android { 307cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovnamespace hardware { 317cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovnamespace audio { 327cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovnamespace effect { 337cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovnamespace V2_0 { 347cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovnamespace implementation { 357cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov 367cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovusing ::android::hardware::audio::effect::V2_0::IAutomaticGainControlEffect; 377cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovusing ::android::hardware::audio::effect::V2_0::Result; 387cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovusing ::android::hardware::Return; 397cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovusing ::android::hardware::Void; 407cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovusing ::android::hardware::hidl_vec; 417cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovusing ::android::hardware::hidl_string; 427cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovusing ::android::sp; 437cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov 447cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovstruct AutomaticGainControlEffect : public IAutomaticGainControlEffect { 457cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov explicit AutomaticGainControlEffect(effect_handle_t handle); 467cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov 477cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov // Methods from ::android::hardware::audio::effect::V2_0::IEffect follow. 487cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<Result> init() override; 497cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<Result> setConfig( 507cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov const EffectConfig& config, 517cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov const sp<IEffectBufferProviderCallback>& inputBufferProvider, 527cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov const sp<IEffectBufferProviderCallback>& outputBufferProvider) override; 537cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<Result> reset() override; 547cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<Result> enable() override; 557cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<Result> disable() override; 567cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<Result> setDevice(AudioDevice device) override; 577cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<void> setAndGetVolume( 587cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov const hidl_vec<uint32_t>& volumes, setAndGetVolume_cb _hidl_cb) override; 59f4f2ff39746a36b3d657e34ec1724589051b1ec8Mikhail Naganov Return<Result> volumeChangeNotification(const hidl_vec<uint32_t>& volumes) override; 607cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<Result> setAudioMode(AudioMode mode) override; 617cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<Result> setConfigReverse( 627cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov const EffectConfig& config, 637cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov const sp<IEffectBufferProviderCallback>& inputBufferProvider, 647cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov const sp<IEffectBufferProviderCallback>& outputBufferProvider) override; 657cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<Result> setInputDevice(AudioDevice device) override; 667cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<void> getConfig(getConfig_cb _hidl_cb) override; 677cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<void> getConfigReverse(getConfigReverse_cb _hidl_cb) override; 687cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<void> getSupportedAuxChannelsConfigs( 697cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov uint32_t maxConfigs, getSupportedAuxChannelsConfigs_cb _hidl_cb) override; 707cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<void> getAuxChannelsConfig(getAuxChannelsConfig_cb _hidl_cb) override; 717cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<Result> setAuxChannelsConfig(const EffectAuxChannelsConfig& config) override; 727cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<Result> setAudioSource(AudioSource source) override; 737cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<Result> offload(const EffectOffloadParameter& param) override; 747cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<void> getDescriptor(getDescriptor_cb _hidl_cb) override; 75a331de14219b34b08f4cbb462a45f1fd82a92d48Mikhail Naganov Return<void> prepareForProcessing(prepareForProcessing_cb _hidl_cb) override; 76a331de14219b34b08f4cbb462a45f1fd82a92d48Mikhail Naganov Return<Result> setProcessBuffers( 77a331de14219b34b08f4cbb462a45f1fd82a92d48Mikhail Naganov const AudioBuffer& inBuffer, const AudioBuffer& outBuffer) override; 787cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<void> command( 797cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov uint32_t commandId, 807cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov const hidl_vec<uint8_t>& data, 817cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov uint32_t resultMaxSize, 827cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov command_cb _hidl_cb) override; 837cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<Result> setParameter( 847cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov const hidl_vec<uint8_t>& parameter, const hidl_vec<uint8_t>& value) override; 857cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<void> getParameter( 867cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov const hidl_vec<uint8_t>& parameter, 877cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov uint32_t valueMaxSize, 887cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov getParameter_cb _hidl_cb) override; 897cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<void> getSupportedConfigsForFeature( 907cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov uint32_t featureId, 917cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov uint32_t maxConfigs, 927cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov uint32_t configSize, 937cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov getSupportedConfigsForFeature_cb _hidl_cb) override; 947cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<void> getCurrentConfigForFeature( 957cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov uint32_t featureId, 967cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov uint32_t configSize, 977cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov getCurrentConfigForFeature_cb _hidl_cb) override; 987cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<Result> setCurrentConfigForFeature( 997cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov uint32_t featureId, const hidl_vec<uint8_t>& configData) override; 100a331de14219b34b08f4cbb462a45f1fd82a92d48Mikhail Naganov Return<Result> close() override; 1017cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov 1027cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov // Methods from ::android::hardware::audio::effect::V2_0::IAutomaticGainControlEffect follow. 1037cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<Result> setTargetLevel(int16_t targetLevelMb) override; 1047cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<void> getTargetLevel(getTargetLevel_cb _hidl_cb) override; 1057cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<Result> setCompGain(int16_t compGainMb) override; 1067cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<void> getCompGain(getCompGain_cb _hidl_cb) override; 1077cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<Result> setLimiterEnabled(bool enabled) override; 1087cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<void> isLimiterEnabled(isLimiterEnabled_cb _hidl_cb) override; 1097cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<Result> setAllProperties( 1107cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov const IAutomaticGainControlEffect::AllProperties& properties) override; 1117cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<void> getAllProperties(getAllProperties_cb _hidl_cb) override; 1127cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov 1137cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov private: 1147cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov sp<Effect> mEffect; 1157cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov 1167cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov virtual ~AutomaticGainControlEffect(); 1177cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov 1187cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov void propertiesFromHal( 1197cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov const t_agc_settings& halProperties, 1207cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov IAutomaticGainControlEffect::AllProperties* properties); 1217cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov void propertiesToHal( 1227cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov const IAutomaticGainControlEffect::AllProperties& properties, 1237cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov t_agc_settings* halProperties); 1247cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov}; 1257cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov 1267cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov} // namespace implementation 1277cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov} // namespace V2_0 1287cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov} // namespace effect 1297cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov} // namespace audio 1307cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov} // namespace hardware 1317cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov} // namespace android 1327cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov 133d6e4f03acf5fa1e76b75e33af7a26f248a92be9aSteven Moreland#endif // ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_AUTOMATICGAINCONTROLEFFECT_H 134