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_VISUALIZEREFFECT_H 18d6e4f03acf5fa1e76b75e33af7a26f248a92be9aSteven Moreland#define ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_VISUALIZEREFFECT_H 197cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov 207cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov#include <android/hardware/audio/effect/2.0/IVisualizerEffect.h> 217cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov#include <hidl/Status.h> 227cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov 237cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov#include <hidl/MQDescriptor.h> 247cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov 257cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov#include "Effect.h" 267cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov 277cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovnamespace android { 287cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovnamespace hardware { 297cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovnamespace audio { 307cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovnamespace effect { 317cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovnamespace V2_0 { 327cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovnamespace implementation { 337cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov 347cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovusing ::android::hardware::audio::common::V2_0::AudioDevice; 357cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovusing ::android::hardware::audio::common::V2_0::AudioMode; 367cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovusing ::android::hardware::audio::common::V2_0::AudioSource; 377cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovusing ::android::hardware::audio::effect::V2_0::AudioBuffer; 387cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovusing ::android::hardware::audio::effect::V2_0::EffectAuxChannelsConfig; 397cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovusing ::android::hardware::audio::effect::V2_0::EffectConfig; 407cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovusing ::android::hardware::audio::effect::V2_0::EffectDescriptor; 417cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovusing ::android::hardware::audio::effect::V2_0::EffectOffloadParameter; 427cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovusing ::android::hardware::audio::effect::V2_0::IEffect; 437cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovusing ::android::hardware::audio::effect::V2_0::IEffectBufferProviderCallback; 447cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovusing ::android::hardware::audio::effect::V2_0::IVisualizerEffect; 457cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovusing ::android::hardware::audio::effect::V2_0::Result; 467cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovusing ::android::hardware::Return; 477cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovusing ::android::hardware::Void; 487cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovusing ::android::hardware::hidl_vec; 497cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovusing ::android::hardware::hidl_string; 507cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovusing ::android::sp; 517cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov 527cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganovstruct VisualizerEffect : public IVisualizerEffect { 537cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov explicit VisualizerEffect(effect_handle_t handle); 547cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov 557cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov // Methods from ::android::hardware::audio::effect::V2_0::IEffect follow. 567cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<Result> init() override; 577cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<Result> setConfig( 587cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov const EffectConfig& config, 597cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov const sp<IEffectBufferProviderCallback>& inputBufferProvider, 607cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov const sp<IEffectBufferProviderCallback>& outputBufferProvider) override; 617cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<Result> reset() override; 627cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<Result> enable() override; 637cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<Result> disable() override; 647cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<Result> setDevice(AudioDevice device) override; 657cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<void> setAndGetVolume( 667cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov const hidl_vec<uint32_t>& volumes, setAndGetVolume_cb _hidl_cb) override; 67f4f2ff39746a36b3d657e34ec1724589051b1ec8Mikhail Naganov Return<Result> volumeChangeNotification(const hidl_vec<uint32_t>& volumes) override; 687cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<Result> setAudioMode(AudioMode mode) override; 697cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<Result> setConfigReverse( 707cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov const EffectConfig& config, 717cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov const sp<IEffectBufferProviderCallback>& inputBufferProvider, 727cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov const sp<IEffectBufferProviderCallback>& outputBufferProvider) override; 737cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<Result> setInputDevice(AudioDevice device) override; 747cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<void> getConfig(getConfig_cb _hidl_cb) override; 757cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<void> getConfigReverse(getConfigReverse_cb _hidl_cb) override; 767cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<void> getSupportedAuxChannelsConfigs( 777cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov uint32_t maxConfigs, getSupportedAuxChannelsConfigs_cb _hidl_cb) override; 787cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<void> getAuxChannelsConfig(getAuxChannelsConfig_cb _hidl_cb) override; 797cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<Result> setAuxChannelsConfig(const EffectAuxChannelsConfig& config) override; 807cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<Result> setAudioSource(AudioSource source) override; 817cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<Result> offload(const EffectOffloadParameter& param) override; 827cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<void> getDescriptor(getDescriptor_cb _hidl_cb) override; 83a331de14219b34b08f4cbb462a45f1fd82a92d48Mikhail Naganov Return<void> prepareForProcessing(prepareForProcessing_cb _hidl_cb) override; 84a331de14219b34b08f4cbb462a45f1fd82a92d48Mikhail Naganov Return<Result> setProcessBuffers( 85a331de14219b34b08f4cbb462a45f1fd82a92d48Mikhail Naganov const AudioBuffer& inBuffer, const AudioBuffer& outBuffer) override; 867cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<void> command( 877cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov uint32_t commandId, 887cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov const hidl_vec<uint8_t>& data, 897cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov uint32_t resultMaxSize, 907cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov command_cb _hidl_cb) override; 917cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<Result> setParameter( 927cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov const hidl_vec<uint8_t>& parameter, const hidl_vec<uint8_t>& value) override; 937cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<void> getParameter( 947cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov const hidl_vec<uint8_t>& parameter, 957cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov uint32_t valueMaxSize, 967cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov getParameter_cb _hidl_cb) override; 977cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<void> getSupportedConfigsForFeature( 987cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov uint32_t featureId, 997cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov uint32_t maxConfigs, 1007cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov uint32_t configSize, 1017cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov getSupportedConfigsForFeature_cb _hidl_cb) override; 1027cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<void> getCurrentConfigForFeature( 1037cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov uint32_t featureId, 1047cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov uint32_t configSize, 1057cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov getCurrentConfigForFeature_cb _hidl_cb) override; 1067cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<Result> setCurrentConfigForFeature( 1077cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov uint32_t featureId, const hidl_vec<uint8_t>& configData) override; 108a331de14219b34b08f4cbb462a45f1fd82a92d48Mikhail Naganov Return<Result> close() override; 1097cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov 1107cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov // Methods from ::android::hardware::audio::effect::V2_0::IVisualizerEffect follow. 1117cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<Result> setCaptureSize(uint16_t captureSize) override; 1127cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<void> getCaptureSize(getCaptureSize_cb _hidl_cb) override; 1137cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<Result> setScalingMode(IVisualizerEffect::ScalingMode scalingMode) override; 1147cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<void> getScalingMode(getScalingMode_cb _hidl_cb) override; 1157cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<Result> setLatency(uint32_t latencyMs) override; 1167cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<void> getLatency(getLatency_cb _hidl_cb) override; 1177cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<Result> setMeasurementMode(IVisualizerEffect::MeasurementMode measurementMode) override; 1187cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<void> getMeasurementMode(getMeasurementMode_cb _hidl_cb) override; 1197cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<void> capture(capture_cb _hidl_cb) override; 1207cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov Return<void> measure(measure_cb _hidl_cb) override; 1217cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov 1227cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov private: 1237cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov sp<Effect> mEffect; 1247cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov uint16_t mCaptureSize; 1257cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov MeasurementMode mMeasurementMode; 1267cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov 1277cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov virtual ~VisualizerEffect(); 1287cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov}; 1297cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov 1307cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov} // namespace implementation 1317cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov} // namespace V2_0 1327cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov} // namespace effect 1337cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov} // namespace audio 1347cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov} // namespace hardware 1357cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov} // namespace android 1367cbf2f1fb15a2a7d9b8b61ca81ad93fa9ddcaea3Mikhail Naganov 137d6e4f03acf5fa1e76b75e33af7a26f248a92be9aSteven Moreland#endif // ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_VISUALIZEREFFECT_H 138