AudioHal: adapt effect_param_t handling with AIDL

Bug: 258124419
Test: atest EffectParamWrapper_tests
Test: Enable AIDL and build, run cts
Test: atest EffectsFactoryHalInterfaceTest

Change-Id: I404122422d4be70f6f24a1b4e40548fed41110b9
diff --git a/media/libaudiohal/impl/EffectConversionHelperAidl.h b/media/libaudiohal/impl/EffectConversionHelperAidl.h
index 5d7c1d6..35249f5 100644
--- a/media/libaudiohal/impl/EffectConversionHelperAidl.h
+++ b/media/libaudiohal/impl/EffectConversionHelperAidl.h
@@ -25,28 +25,17 @@
 
 #include <media/AidlConversionNdk.h>
 #include <system/audio_effect.h>
-#include <system/audio_effects/effect_aec.h>
-#include <system/audio_effects/effect_downmix.h>
-#include <system/audio_effects/effect_dynamicsprocessing.h>
-#include <system/audio_effects/effect_hapticgenerator.h>
-#include <system/audio_effects/effect_ns.h>
-#include <system/audio_effects/effect_visualizer.h>
+#include <system/audio_effects/audio_effects_utils.h>
 
 namespace android {
 namespace effect {
 
-static const size_t kEffectParamSize = sizeof(effect_param_t);
-static const size_t kEffectConfigSize = sizeof(effect_config_t);
-
 class EffectConversionHelperAidl {
   protected:
     EffectConversionHelperAidl(
             std::shared_ptr<::aidl::android::hardware::audio::effect::IEffect> effect,
-            int32_t sessionId, int32_t ioId, ::aidl::android::media::audio::common::AudioUuid uuid)
-        : mSessionId(sessionId),
-          mIoId(ioId),
-          mTypeUuid(std::move(uuid)),
-          mEffect(std::move(effect)) {}
+            int32_t sessionId, int32_t ioId,
+            const ::aidl::android::hardware::audio::effect::Descriptor& desc);
 
     status_t handleCommand(uint32_t cmdCode, uint32_t cmdSize, void* pCmdData, uint32_t* replySize,
                            void* pReplyData);
@@ -54,9 +43,25 @@
   private:
     const int32_t mSessionId;
     const int32_t mIoId;
+    const ::aidl::android::hardware::audio::effect::Descriptor mDesc;
     ::aidl::android::media::audio::common::AudioUuid mTypeUuid;
     const std::shared_ptr<::aidl::android::hardware::audio::effect::IEffect> mEffect;
+    ::aidl::android::hardware::audio::effect::IEffect::OpenEffectReturn mOpenReturn;
+    ::aidl::android::hardware::audio::effect::Parameter::Common mCommon;
 
+    const aidl::android::media::audio::common::AudioFormatDescription kDefaultFormatDescription = {
+            .type = aidl::android::media::audio::common::AudioFormatType::PCM,
+            .pcm = aidl::android::media::audio::common::PcmType::FLOAT_32_BIT};
+
+    static constexpr int kDefaultframeCount = 0x100;
+
+    using AudioChannelLayout = aidl::android::media::audio::common::AudioChannelLayout;
+    const aidl::android::media::audio::common::AudioConfig kDefaultAudioConfig = {
+            .base = {.sampleRate = 44100,
+                     .channelMask = AudioChannelLayout::make<AudioChannelLayout::layoutMask>(
+                             AudioChannelLayout::LAYOUT_STEREO),
+                     .format = kDefaultFormatDescription},
+            .frameCount = kDefaultframeCount};
     // command handler map
     typedef status_t (EffectConversionHelperAidl::*CommandHandler)(uint32_t /* cmdSize */,
                                                                    const void* /* pCmdData */,
@@ -65,23 +70,14 @@
     static const std::map<uint32_t /* effect_command_e */, CommandHandler> mCommandHandlerMap;
 
     // parameter set/get handler map
-    typedef status_t (EffectConversionHelperAidl::*SetParameter)(const effect_param_t& param);
-    typedef status_t (EffectConversionHelperAidl::*GetParameter)(effect_param_t& param);
+    typedef status_t (EffectConversionHelperAidl::*SetParameter)(
+            android::effect::utils::EffectParamReader& param);
+    typedef status_t (EffectConversionHelperAidl::*GetParameter)(
+            android::effect::utils::EffectParamWriter& param);
     static const std::map<::aidl::android::media::audio::common::AudioUuid /* TypeUUID */,
                           std::pair<SetParameter, GetParameter>>
             mParameterHandlerMap;
 
-    // align to 32 bit boundary
-    static constexpr size_t padding(size_t size) {
-        return ((size - 1) / sizeof(int) + 1) * sizeof(int);
-    }
-    static constexpr bool validatePVsize(const effect_param_t& param, size_t p, size_t v) {
-        return padding(param.psize) == p && param.vsize == v;
-    }
-    static constexpr bool validateCommandSize(const effect_param_t& param, size_t size) {
-        return padding(param.psize) + param.vsize + kEffectParamSize <= size;
-    }
-
     status_t handleInit(uint32_t cmdSize, const void* pCmdData, uint32_t* replySize,
                         void* pReplyData);
     status_t handleSetParameter(uint32_t cmdSize, const void* pCmdData, uint32_t* replySize,
@@ -107,9 +103,15 @@
     status_t handleFirstPriority(uint32_t cmdSize, const void* pCmdData, uint32_t* replySize,
                                  void* pReplyData);
 
-    // AEC parameter handler
-    status_t setAecParameter(const effect_param_t& param);
-    status_t getAecParameter(effect_param_t& param);
+    // set/get parameter handler
+    status_t setAecParameter(android::effect::utils::EffectParamReader& param);
+    status_t getAecParameter(android::effect::utils::EffectParamWriter& param);
+    status_t setAgcParameter(android::effect::utils::EffectParamReader& param);
+    status_t getAgcParameter(android::effect::utils::EffectParamWriter& param);
+    status_t setBassBoostParameter(android::effect::utils::EffectParamReader& param);
+    status_t getBassBoostParameter(android::effect::utils::EffectParamWriter& param);
+    status_t setDownmixParameter(android::effect::utils::EffectParamReader& param);
+    status_t getDownmixParameter(android::effect::utils::EffectParamWriter& param);
 };
 
 }  // namespace effect