AIDL libaudiohal: adding EffectHalAidl implementation
Bug: 258124419
Test: Build, AIDL not enabled in libaudiohal yet.
Change-Id: I887076b0a54fb9c9153e964b53c91b26057b62a7
diff --git a/media/audioaidlconversion/AidlConversionNdk.cpp b/media/audioaidlconversion/AidlConversionNdk.cpp
index a3e39c7..9981435 100644
--- a/media/audioaidlconversion/AidlConversionNdk.cpp
+++ b/media/audioaidlconversion/AidlConversionNdk.cpp
@@ -29,13 +29,24 @@
namespace aidl {
namespace android {
+using ::aidl::android::hardware::audio::effect::AcousticEchoCanceler;
using ::aidl::android::hardware::audio::effect::Descriptor;
using ::aidl::android::hardware::audio::effect::Flags;
+using ::aidl::android::hardware::audio::effect::Parameter;
+using ::aidl::android::media::audio::common::AudioDeviceDescription;
using ::android::BAD_VALUE;
using ::android::base::unexpected;
////////////////////////////////////////////////////////////////////////////////////////////////////
+// Utils
+
+ConversionResult<AcousticEchoCanceler> getParameterSpecificAec(const Parameter& aidl) {
+ const auto& specific = VALUE_OR_RETURN(UNION_GET(aidl, specific));
+ return VALUE_OR_RETURN(UNION_GET(specific, acousticEchoCanceler));
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
// Converters
ConversionResult<uint32_t> aidl2legacy_Flags_Type_uint32(Flags::Type type) {
@@ -238,7 +249,7 @@
}
ConversionResult<media::audio::common::AudioConfigBase>
-legacy2aidl_AudioConfigBase_buffer_config_t(const buffer_config_t& legacy, bool isInput) {
+legacy2aidl_buffer_config_t_AudioConfigBase(const buffer_config_t& legacy, bool isInput) {
media::audio::common::AudioConfigBase aidl;
if (legacy.mask & EFFECT_CONFIG_SMP_RATE) {
@@ -255,5 +266,35 @@
return aidl;
}
+ConversionResult<uint32_t> aidl2legacy_Parameter_uint32_echoDelay(const Parameter& aidl) {
+ const auto& aec = VALUE_OR_RETURN(getParameterSpecificAec(aidl));
+ const auto& echoDelay = VALUE_OR_RETURN(UNION_GET(aec, echoDelayUs));
+ return VALUE_OR_RETURN(convertIntegral<uint32_t>(echoDelay));
+}
+
+ConversionResult<Parameter> legacy2aidl_uint32_echoDelay_Parameter(const uint32_t& legacy) {
+ int delay = VALUE_OR_RETURN(convertReinterpret<int32_t>(legacy));
+ AcousticEchoCanceler aec = AcousticEchoCanceler::make<AcousticEchoCanceler::echoDelayUs>(delay);
+ Parameter::Specific specific =
+ Parameter::Specific::make<Parameter::Specific::acousticEchoCanceler>(aec);
+
+ return Parameter::make<Parameter::specific>(specific);
+}
+
+ConversionResult<uint32_t> aidl2legacy_Parameter_uint32_mobileMode(const Parameter& aidl) {
+ const auto& aec = VALUE_OR_RETURN(getParameterSpecificAec(aidl));
+ const auto& mobileMode = VALUE_OR_RETURN(UNION_GET(aec, mobileMode));
+ return VALUE_OR_RETURN(convertIntegral<uint32_t>(mobileMode));
+}
+
+ConversionResult<Parameter> legacy2aidl_uint32_mobileMode_Parameter(const uint32_t& legacy) {
+ bool mode = VALUE_OR_RETURN(convertIntegral<bool>(legacy));
+ AcousticEchoCanceler aec = AcousticEchoCanceler::make<AcousticEchoCanceler::mobileMode>(mode);
+ Parameter::Specific specific =
+ Parameter::Specific::make<Parameter::Specific::acousticEchoCanceler>(aec);
+
+ return Parameter::make<Parameter::specific>(specific);
+}
+
} // namespace android
} // aidl