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