Support passing entire effect_param_t as vendor extension
Copy entire effect_param_t into AIDL ParcelableHolder with DefaultExtension
Bug: 271500140
Test: Enable AIDL
Test: atest libAudioHalEffectParamTest
Change-Id: I21829324e820dc68859000d912376a5e1b7d056b
diff --git a/media/audioaidlconversion/AidlConversionEffect.cpp b/media/audioaidlconversion/AidlConversionEffect.cpp
index 611cfab..6f55f1b 100644
--- a/media/audioaidlconversion/AidlConversionEffect.cpp
+++ b/media/audioaidlconversion/AidlConversionEffect.cpp
@@ -52,6 +52,7 @@
using ::android::status_t;
using ::android::base::unexpected;
using ::android::effect::utils::EffectParamReader;
+using ::android::effect::utils::EffectParamWrapper;
using ::android::effect::utils::EffectParamWriter;
////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -408,40 +409,7 @@
}
}
-/**
- * Copy the parameter area of effect_param_t to DefaultExtension::bytes.
- */
-ConversionResult<VendorExtension> legacy2aidl_EffectParameterReader_Param_VendorExtension(
- EffectParamReader& param) {
- size_t len = param.getParameterSize();
- DefaultExtension defaultExt;
- defaultExt.bytes.resize(len);
- RETURN_IF_ERROR(param.readFromParameter(defaultExt.bytes.data(), len));
-
- VendorExtension ext;
- ext.extension.setParcelable(defaultExt);
- return ext;
-}
-
-/**
- * Copy the data area of effect_param_t to DefaultExtension::bytes.
- */
-ConversionResult<VendorExtension> legacy2aidl_EffectParameterReader_Data_VendorExtension(
- EffectParamReader& param) {
- size_t len = param.getValueSize();
- DefaultExtension defaultExt;
- defaultExt.bytes.resize(len);
- RETURN_IF_ERROR(param.readFromValue(defaultExt.bytes.data(), len));
-
- VendorExtension ext;
- ext.extension.setParcelable(defaultExt);
- return ext;
-}
-
-/**
- * Copy DefaultExtension::bytes to the data area of effect_param_t.
- */
-ConversionResult<status_t> aidl2legacy_VendorExtension_EffectParameterWriter_Data(
+ConversionResult<status_t> aidl2legacy_VendorExtension_EffectParameterWriter(
EffectParamWriter& param, VendorExtension ext) {
std::optional<DefaultExtension> defaultExt;
RETURN_IF_ERROR(ext.extension.getParcelable(&defaultExt));
@@ -449,26 +417,47 @@
return unexpected(BAD_VALUE);
}
- RETURN_IF_ERROR(param.writeToValue(defaultExt->bytes.data(), defaultExt->bytes.size()));
+ // DefaultExtension defaultValue = defaultExt->get();
+ if (defaultExt->bytes.size() < sizeof(effect_param_t)) {
+ return unexpected(BAD_VALUE);
+ }
+ // verify data length with EffectParamWrapper, DefaultExtension array size should not smaller
+ // than (sizeof(effect_param_t) + paddedPSize + vSize)
+ EffectParamWrapper wrapper(*(effect_param_t*)defaultExt->bytes.data());
+ if (sizeof(effect_param_t) + wrapper.getPaddedParameterSize() + wrapper.getValueSize() >
+ defaultExt->bytes.size()) {
+ return unexpected(BAD_VALUE);
+ }
+ RETURN_IF_ERROR(param.overwrite(wrapper.getEffectParam()));
return OK;
}
-ConversionResult<Parameter> legacy2aidl_EffectParameterReader_ParameterExtension(
+ConversionResult<VendorExtension> legacy2aidl_EffectParameterReader_VendorExtension(
EffectParamReader& param) {
- VendorExtension ext =
- VALUE_OR_RETURN(legacy2aidl_EffectParameterReader_Data_VendorExtension(param));
- return UNION_MAKE(Parameter, specific, UNION_MAKE(Parameter::Specific, vendorEffect, ext));
+ size_t len = param.getTotalSize();
+ DefaultExtension defaultExt;
+ defaultExt.bytes.resize(len);
+
+ std::memcpy(defaultExt.bytes.data(), (void *)¶m.getEffectParam(), len);
+
+ VendorExtension ext;
+ ext.extension.setParcelable(defaultExt);
+ return ext;
}
-ConversionResult<::android::status_t> aidl2legacy_ParameterExtension_EffectParameterWriter(
+ConversionResult<::android::status_t> aidl2legacy_Parameter_EffectParameterWriter(
const ::aidl::android::hardware::audio::effect::Parameter& aidl,
EffectParamWriter& legacy) {
VendorExtension ext = VALUE_OR_RETURN(
(::aidl::android::getParameterSpecific<Parameter, VendorExtension,
Parameter::Specific::vendorEffect>(aidl)));
- return VALUE_OR_RETURN_STATUS(
- aidl2legacy_VendorExtension_EffectParameterWriter_Data(legacy, ext));
+ return VALUE_OR_RETURN_STATUS(aidl2legacy_VendorExtension_EffectParameterWriter(legacy, ext));
+}
+
+ConversionResult<Parameter> legacy2aidl_EffectParameterReader_Parameter(EffectParamReader& param) {
+ VendorExtension ext = VALUE_OR_RETURN(legacy2aidl_EffectParameterReader_VendorExtension(param));
+ return UNION_MAKE(Parameter, specific, UNION_MAKE(Parameter::Specific, vendorEffect, ext));
}
} // namespace android
diff --git a/media/audioaidlconversion/include/media/AidlConversionEffect.h b/media/audioaidlconversion/include/media/AidlConversionEffect.h
index 5e245a7..b03d06b 100644
--- a/media/audioaidlconversion/include/media/AidlConversionEffect.h
+++ b/media/audioaidlconversion/include/media/AidlConversionEffect.h
@@ -67,7 +67,7 @@
#define VENDOR_EXTENSION_GET_AND_RETURN(_effect, _tag, _param) \
{ \
aidl::android::hardware::audio::effect::VendorExtension _extId = VALUE_OR_RETURN_STATUS( \
- aidl::android::legacy2aidl_EffectParameterReader_Param_VendorExtension(_param)); \
+ aidl::android::legacy2aidl_EffectParameterReader_VendorExtension(_param)); \
aidl::android::hardware::audio::effect::Parameter::Id _id = \
MAKE_EXTENSION_PARAMETER_ID(_effect, _tag##Tag, _extId); \
aidl::android::hardware::audio::effect::Parameter _aidlParam; \
@@ -76,8 +76,7 @@
VALUE_OR_RETURN_STATUS(GET_PARAMETER_SPECIFIC_FIELD( \
_aidlParam, _effect, _tag, _effect::vendor, VendorExtension)); \
return VALUE_OR_RETURN_STATUS( \
- aidl::android::aidl2legacy_ParameterExtension_EffectParameterWriter(_aidlParam, \
- _param)); \
+ aidl::android::aidl2legacy_Parameter_EffectParameterWriter(_aidlParam, _param)); \
}
ConversionResult<uint32_t> aidl2legacy_Flags_Type_uint32(
@@ -157,26 +156,26 @@
ConversionResult<::aidl::android::hardware::audio::effect::Visualizer::MeasurementMode>
legacy2aidl_Parameter_Visualizer_uint32_MeasurementMode(uint32_t legacy);
-ConversionResult<::aidl::android::hardware::audio::effect::Parameter>
-legacy2aidl_EffectParameterReader_ParameterExtension(
- ::android::effect::utils::EffectParamReader& param);
-ConversionResult<::android::status_t> aidl2legacy_ParameterExtension_EffectParameterWriter(
- const ::aidl::android::hardware::audio::effect::Parameter& aidl,
- ::android::effect::utils::EffectParamWriter& legacy);
-
-ConversionResult<::aidl::android::hardware::audio::effect::VendorExtension>
-legacy2aidl_EffectParameterReader_Param_VendorExtension(
- ::android::effect::utils::EffectParamReader& param);
-ConversionResult<::aidl::android::hardware::audio::effect::VendorExtension>
-legacy2aidl_EffectParameterReader_Data_VendorExtension(
- ::android::effect::utils::EffectParamReader& param);
-
+/**
+ * Read DefaultExtension from VendorExtension, and overwrite to the entire effect_param_t (both
+ * parameter and data area) with EffectParamWriter::overwrite.
+ */
ConversionResult<::android::status_t> aidl2legacy_VendorExtension_EffectParameterWriter_Data(
::android::effect::utils::EffectParamWriter& param,
::aidl::android::hardware::audio::effect::VendorExtension ext);
-ConversionResult<::aidl::android::hardware::audio::effect::Parameter>
-legacy2aidl_EffectParameterReader_ParameterExtension(
+/**
+ * Copy the entire effect_param_t (both parameter and data area) to DefaultExtension::bytes, and
+ * write into VendorExtension.
+ */
+ConversionResult<::aidl::android::hardware::audio::effect::VendorExtension>
+legacy2aidl_EffectParameterReader_VendorExtension(
::android::effect::utils::EffectParamReader& param);
+ConversionResult<::android::status_t> aidl2legacy_Parameter_EffectParameterWriter(
+ const ::aidl::android::hardware::audio::effect::Parameter& aidl,
+ ::android::effect::utils::EffectParamWriter& legacy);
+ConversionResult<::aidl::android::hardware::audio::effect::Parameter>
+legacy2aidl_EffectParameterReader_Parameter(
+ ::android::effect::utils::EffectParamReader& param);
} // namespace android
} // namespace aidl
diff --git a/media/libaudiohal/impl/effectsAidlConversion/AidlConversionAec.cpp b/media/libaudiohal/impl/effectsAidlConversion/AidlConversionAec.cpp
index 92b77d8..f5640b8 100644
--- a/media/libaudiohal/impl/effectsAidlConversion/AidlConversionAec.cpp
+++ b/media/libaudiohal/impl/effectsAidlConversion/AidlConversionAec.cpp
@@ -67,7 +67,7 @@
default: {
// for vendor extension, copy data area to the DefaultExtension, parameter ignored
VendorExtension ext = VALUE_OR_RETURN_STATUS(
- aidl::android::legacy2aidl_EffectParameterReader_Data_VendorExtension(param));
+ aidl::android::legacy2aidl_EffectParameterReader_VendorExtension(param));
aidlParam = MAKE_SPECIFIC_PARAMETER(AcousticEchoCanceler, acousticEchoCanceler, vendor,
ext);
RETURN_STATUS_IF_ERROR(statusTFromBinderStatus(mEffect->setParameter(aidlParam)));
diff --git a/media/libaudiohal/impl/effectsAidlConversion/AidlConversionAgc1.cpp b/media/libaudiohal/impl/effectsAidlConversion/AidlConversionAgc1.cpp
index 1363ba4..03606f4 100644
--- a/media/libaudiohal/impl/effectsAidlConversion/AidlConversionAgc1.cpp
+++ b/media/libaudiohal/impl/effectsAidlConversion/AidlConversionAgc1.cpp
@@ -90,7 +90,7 @@
default: {
// for vendor extension, copy data area to the DefaultExtension, parameter ignored
VendorExtension ext = VALUE_OR_RETURN_STATUS(
- aidl::android::legacy2aidl_EffectParameterReader_Data_VendorExtension(param));
+ aidl::android::legacy2aidl_EffectParameterReader_VendorExtension(param));
Parameter aidlParam = MAKE_SPECIFIC_PARAMETER(AutomaticGainControlV1,
automaticGainControlV1, vendor, ext);
return statusTFromBinderStatus(mEffect->setParameter(aidlParam));
diff --git a/media/libaudiohal/impl/effectsAidlConversion/AidlConversionAgc2.cpp b/media/libaudiohal/impl/effectsAidlConversion/AidlConversionAgc2.cpp
index b35a1c6..b9a5b02 100644
--- a/media/libaudiohal/impl/effectsAidlConversion/AidlConversionAgc2.cpp
+++ b/media/libaudiohal/impl/effectsAidlConversion/AidlConversionAgc2.cpp
@@ -68,7 +68,7 @@
default: {
// for vendor extension, copy data area to the DefaultExtension, parameter ignored
VendorExtension ext = VALUE_OR_RETURN_STATUS(
- aidl::android::legacy2aidl_EffectParameterReader_Data_VendorExtension(param));
+ aidl::android::legacy2aidl_EffectParameterReader_VendorExtension(param));
aidlParam = MAKE_SPECIFIC_PARAMETER(AutomaticGainControlV2, automaticGainControlV2,
vendor, ext);
break;
diff --git a/media/libaudiohal/impl/effectsAidlConversion/AidlConversionBassBoost.cpp b/media/libaudiohal/impl/effectsAidlConversion/AidlConversionBassBoost.cpp
index 7c6a5a2..8df56b0 100644
--- a/media/libaudiohal/impl/effectsAidlConversion/AidlConversionBassBoost.cpp
+++ b/media/libaudiohal/impl/effectsAidlConversion/AidlConversionBassBoost.cpp
@@ -66,7 +66,7 @@
default: {
// for vendor extension, copy data area to the DefaultExtension, parameter ignored
VendorExtension ext = VALUE_OR_RETURN_STATUS(
- aidl::android::legacy2aidl_EffectParameterReader_Data_VendorExtension(param));
+ aidl::android::legacy2aidl_EffectParameterReader_VendorExtension(param));
aidlParam = MAKE_SPECIFIC_PARAMETER(BassBoost, bassBoost, vendor, ext);
break;
}
diff --git a/media/libaudiohal/impl/effectsAidlConversion/AidlConversionDownmix.cpp b/media/libaudiohal/impl/effectsAidlConversion/AidlConversionDownmix.cpp
index b57971c..2b98e21 100644
--- a/media/libaudiohal/impl/effectsAidlConversion/AidlConversionDownmix.cpp
+++ b/media/libaudiohal/impl/effectsAidlConversion/AidlConversionDownmix.cpp
@@ -60,7 +60,7 @@
default: {
// for vendor extension, copy data area to the DefaultExtension, parameter ignored
VendorExtension ext = VALUE_OR_RETURN_STATUS(
- aidl::android::legacy2aidl_EffectParameterReader_Data_VendorExtension(param));
+ aidl::android::legacy2aidl_EffectParameterReader_VendorExtension(param));
aidlParam = MAKE_SPECIFIC_PARAMETER(Downmix, downmix, vendor, ext);
}
}
diff --git a/media/libaudiohal/impl/effectsAidlConversion/AidlConversionDynamicsProcessing.cpp b/media/libaudiohal/impl/effectsAidlConversion/AidlConversionDynamicsProcessing.cpp
index fe845ab..89f8b83 100644
--- a/media/libaudiohal/impl/effectsAidlConversion/AidlConversionDynamicsProcessing.cpp
+++ b/media/libaudiohal/impl/effectsAidlConversion/AidlConversionDynamicsProcessing.cpp
@@ -119,7 +119,7 @@
default: {
// for vendor extension, copy data area to the DefaultExtension, parameter ignored
VendorExtension ext = VALUE_OR_RETURN_STATUS(
- aidl::android::legacy2aidl_EffectParameterReader_Data_VendorExtension(param));
+ aidl::android::legacy2aidl_EffectParameterReader_VendorExtension(param));
aidlParam =
MAKE_SPECIFIC_PARAMETER(DynamicsProcessing, dynamicsProcessing, vendor, ext);
break;
diff --git a/media/libaudiohal/impl/effectsAidlConversion/AidlConversionEnvReverb.cpp b/media/libaudiohal/impl/effectsAidlConversion/AidlConversionEnvReverb.cpp
index 754da43..fcade68 100644
--- a/media/libaudiohal/impl/effectsAidlConversion/AidlConversionEnvReverb.cpp
+++ b/media/libaudiohal/impl/effectsAidlConversion/AidlConversionEnvReverb.cpp
@@ -168,7 +168,7 @@
default: {
// for vendor extension, copy data area to the DefaultExtension, parameter ignored
VendorExtension ext = VALUE_OR_RETURN_STATUS(
- aidl::android::legacy2aidl_EffectParameterReader_Data_VendorExtension(param));
+ aidl::android::legacy2aidl_EffectParameterReader_VendorExtension(param));
Parameter aidlParam = MAKE_SPECIFIC_PARAMETER(EnvironmentalReverb,
environmentalReverb, vendor, ext);
RETURN_STATUS_IF_ERROR(statusTFromBinderStatus(mEffect->setParameter(aidlParam)));
diff --git a/media/libaudiohal/impl/effectsAidlConversion/AidlConversionEq.cpp b/media/libaudiohal/impl/effectsAidlConversion/AidlConversionEq.cpp
index fc867c7..ca6ff88 100644
--- a/media/libaudiohal/impl/effectsAidlConversion/AidlConversionEq.cpp
+++ b/media/libaudiohal/impl/effectsAidlConversion/AidlConversionEq.cpp
@@ -103,7 +103,7 @@
default: {
// for vendor extension, copy data area to the DefaultExtension, parameter ignored
VendorExtension ext = VALUE_OR_RETURN_STATUS(
- aidl::android::legacy2aidl_EffectParameterReader_Data_VendorExtension(param));
+ aidl::android::legacy2aidl_EffectParameterReader_VendorExtension(param));
aidlParam = MAKE_SPECIFIC_PARAMETER(Equalizer, equalizer, vendor, ext);
break;
}
diff --git a/media/libaudiohal/impl/effectsAidlConversion/AidlConversionHapticGenerator.cpp b/media/libaudiohal/impl/effectsAidlConversion/AidlConversionHapticGenerator.cpp
index 73430ba..bdee7b6 100644
--- a/media/libaudiohal/impl/effectsAidlConversion/AidlConversionHapticGenerator.cpp
+++ b/media/libaudiohal/impl/effectsAidlConversion/AidlConversionHapticGenerator.cpp
@@ -79,7 +79,7 @@
default: {
// for vendor extension, copy data area to the DefaultExtension, parameter ignored
VendorExtension ext = VALUE_OR_RETURN_STATUS(
- aidl::android::legacy2aidl_EffectParameterReader_Data_VendorExtension(param));
+ aidl::android::legacy2aidl_EffectParameterReader_VendorExtension(param));
aidlParam = MAKE_SPECIFIC_PARAMETER(HapticGenerator, hapticGenerator, vendor, ext);
break;
}
diff --git a/media/libaudiohal/impl/effectsAidlConversion/AidlConversionLoudnessEnhancer.cpp b/media/libaudiohal/impl/effectsAidlConversion/AidlConversionLoudnessEnhancer.cpp
index 31eec65..a0526e6 100644
--- a/media/libaudiohal/impl/effectsAidlConversion/AidlConversionLoudnessEnhancer.cpp
+++ b/media/libaudiohal/impl/effectsAidlConversion/AidlConversionLoudnessEnhancer.cpp
@@ -58,7 +58,7 @@
default: {
// for vendor extension, copy data area to the DefaultExtension, parameter ignored
VendorExtension ext = VALUE_OR_RETURN_STATUS(
- aidl::android::legacy2aidl_EffectParameterReader_Data_VendorExtension(param));
+ aidl::android::legacy2aidl_EffectParameterReader_VendorExtension(param));
aidlParam = MAKE_SPECIFIC_PARAMETER(LoudnessEnhancer, loudnessEnhancer, vendor, ext);
break;
}
diff --git a/media/libaudiohal/impl/effectsAidlConversion/AidlConversionNoiseSuppression.cpp b/media/libaudiohal/impl/effectsAidlConversion/AidlConversionNoiseSuppression.cpp
index 7c34ed7..bf75e4a 100644
--- a/media/libaudiohal/impl/effectsAidlConversion/AidlConversionNoiseSuppression.cpp
+++ b/media/libaudiohal/impl/effectsAidlConversion/AidlConversionNoiseSuppression.cpp
@@ -63,7 +63,7 @@
default: {
// for vendor extension, copy data area to the DefaultExtension, parameter ignored
VendorExtension ext = VALUE_OR_RETURN_STATUS(
- aidl::android::legacy2aidl_EffectParameterReader_Data_VendorExtension(param));
+ aidl::android::legacy2aidl_EffectParameterReader_VendorExtension(param));
aidlParam = MAKE_SPECIFIC_PARAMETER(NoiseSuppression, noiseSuppression, vendor, ext);
break;
}
diff --git a/media/libaudiohal/impl/effectsAidlConversion/AidlConversionPresetReverb.cpp b/media/libaudiohal/impl/effectsAidlConversion/AidlConversionPresetReverb.cpp
index e936aef..3cac591 100644
--- a/media/libaudiohal/impl/effectsAidlConversion/AidlConversionPresetReverb.cpp
+++ b/media/libaudiohal/impl/effectsAidlConversion/AidlConversionPresetReverb.cpp
@@ -61,7 +61,7 @@
} else {
// for vendor extension, copy data area to the DefaultExtension, parameter ignored
VendorExtension ext = VALUE_OR_RETURN_STATUS(
- aidl::android::legacy2aidl_EffectParameterReader_Data_VendorExtension(param));
+ aidl::android::legacy2aidl_EffectParameterReader_VendorExtension(param));
aidlParam = MAKE_SPECIFIC_PARAMETER(PresetReverb, presetReverb, vendor, ext);
}
diff --git a/media/libaudiohal/impl/effectsAidlConversion/AidlConversionSpatializer.cpp b/media/libaudiohal/impl/effectsAidlConversion/AidlConversionSpatializer.cpp
index eadd6c3..ff0c32b 100644
--- a/media/libaudiohal/impl/effectsAidlConversion/AidlConversionSpatializer.cpp
+++ b/media/libaudiohal/impl/effectsAidlConversion/AidlConversionSpatializer.cpp
@@ -44,7 +44,7 @@
status_t AidlConversionSpatializer::setParameter(EffectParamReader& param) {
Parameter aidlParam = VALUE_OR_RETURN_STATUS(
- ::aidl::android::legacy2aidl_EffectParameterReader_ParameterExtension(param));
+ ::aidl::android::legacy2aidl_EffectParameterReader_Parameter(param));
return statusTFromBinderStatus(mEffect->setParameter(aidlParam));
}
@@ -64,8 +64,7 @@
RETURN_STATUS_IF_ERROR(statusTFromBinderStatus(mEffect->getParameter(id, &aidlParam)));
// copy the AIDL extension data back to effect_param_t
return VALUE_OR_RETURN_STATUS(
- ::aidl::android::aidl2legacy_ParameterExtension_EffectParameterWriter(aidlParam,
- param));
+ ::aidl::android::aidl2legacy_Parameter_EffectParameterWriter(aidlParam, param));
}
} // namespace effect
diff --git a/media/libaudiohal/impl/effectsAidlConversion/AidlConversionVendorExtension.cpp b/media/libaudiohal/impl/effectsAidlConversion/AidlConversionVendorExtension.cpp
index 488d5cd..2c29c7d 100644
--- a/media/libaudiohal/impl/effectsAidlConversion/AidlConversionVendorExtension.cpp
+++ b/media/libaudiohal/impl/effectsAidlConversion/AidlConversionVendorExtension.cpp
@@ -52,20 +52,19 @@
*/
status_t AidlConversionVendorExtension::setParameter(EffectParamReader& param) {
Parameter aidlParam = VALUE_OR_RETURN_STATUS(
- ::aidl::android::legacy2aidl_EffectParameterReader_ParameterExtension(param));
+ ::aidl::android::legacy2aidl_EffectParameterReader_Parameter(param));
return statusTFromBinderStatus(mEffect->setParameter(aidlParam));
}
status_t AidlConversionVendorExtension::getParameter(EffectParamWriter& param) {
VendorExtension extId = VALUE_OR_RETURN_STATUS(
- aidl::android::legacy2aidl_EffectParameterReader_Param_VendorExtension(param));
+ aidl::android::legacy2aidl_EffectParameterReader_VendorExtension(param));
Parameter::Id id = UNION_MAKE(Parameter::Id, vendorEffectTag, extId);
Parameter aidlParam;
RETURN_STATUS_IF_ERROR(statusTFromBinderStatus(mEffect->getParameter(id, &aidlParam)));
// copy the AIDL extension data back to effect_param_t
return VALUE_OR_RETURN_STATUS(
- ::aidl::android::aidl2legacy_ParameterExtension_EffectParameterWriter(aidlParam,
- param));
+ ::aidl::android::aidl2legacy_Parameter_EffectParameterWriter(aidlParam, param));
}
} // namespace effect
diff --git a/media/libaudiohal/impl/effectsAidlConversion/AidlConversionVirtualizer.cpp b/media/libaudiohal/impl/effectsAidlConversion/AidlConversionVirtualizer.cpp
index c95c3a9..cad0068 100644
--- a/media/libaudiohal/impl/effectsAidlConversion/AidlConversionVirtualizer.cpp
+++ b/media/libaudiohal/impl/effectsAidlConversion/AidlConversionVirtualizer.cpp
@@ -77,7 +77,7 @@
default: {
// for vendor extension, copy data area to the DefaultExtension, parameter ignored
VendorExtension ext = VALUE_OR_RETURN_STATUS(
- aidl::android::legacy2aidl_EffectParameterReader_Data_VendorExtension(param));
+ aidl::android::legacy2aidl_EffectParameterReader_VendorExtension(param));
aidlParam = MAKE_SPECIFIC_PARAMETER(Virtualizer, virtualizer, vendor, ext);
break;
}
diff --git a/media/libaudiohal/impl/effectsAidlConversion/AidlConversionVisualizer.cpp b/media/libaudiohal/impl/effectsAidlConversion/AidlConversionVisualizer.cpp
index b4440ee..18d0d95 100644
--- a/media/libaudiohal/impl/effectsAidlConversion/AidlConversionVisualizer.cpp
+++ b/media/libaudiohal/impl/effectsAidlConversion/AidlConversionVisualizer.cpp
@@ -75,7 +75,7 @@
default: {
// for vendor extension, copy data area to the DefaultExtension, parameter ignored
VendorExtension ext = VALUE_OR_RETURN_STATUS(
- aidl::android::legacy2aidl_EffectParameterReader_Data_VendorExtension(param));
+ aidl::android::legacy2aidl_EffectParameterReader_VendorExtension(param));
aidlParam = MAKE_SPECIFIC_PARAMETER(Visualizer, visualizer, vendor, ext);
break;
}
diff --git a/media/libaudiohal/tests/EffectsFactoryHalInterface_test.cpp b/media/libaudiohal/tests/EffectsFactoryHalInterface_test.cpp
index 63f895f..2854496 100644
--- a/media/libaudiohal/tests/EffectsFactoryHalInterface_test.cpp
+++ b/media/libaudiohal/tests/EffectsFactoryHalInterface_test.cpp
@@ -16,6 +16,7 @@
//#define LOG_NDEBUG 0
#include <algorithm>
+#include <array>
#include <cstddef>
#include <cstdint>
#include <cstring>
@@ -24,8 +25,11 @@
#define LOG_TAG "EffectsFactoryHalInterfaceTest"
#include <aidl/android/media/audio/common/AudioUuid.h>
+#include <gtest/gtest.h>
#include <media/AidlConversionCppNdk.h>
#include <media/audiohal/EffectsFactoryHalInterface.h>
+#include <system/audio_aidl_utils.h>
+#include <system/audio_effect.h>
#include <system/audio_effects/audio_effects_utils.h>
#include <system/audio_effects/effect_aec.h>
#include <system/audio_effects/effect_agc.h>
@@ -36,17 +40,15 @@
#include <system/audio_effects/effect_hapticgenerator.h>
#include <system/audio_effects/effect_loudnessenhancer.h>
#include <system/audio_effects/effect_ns.h>
-#include <system/audio_effect.h>
-
-#include <gtest/gtest.h>
#include <utils/RefBase.h>
#include <vibrator/ExternalVibrationUtils.h>
namespace android {
+using ::aidl::android::media::audio::common::AudioUuid;
+using ::android::audio::utils::toString;
using effect::utils::EffectParamReader;
using effect::utils::EffectParamWriter;
-using ::aidl::android::media::audio::common::AudioUuid;
// EffectsFactoryHalInterface
TEST(libAudioHalTest, createEffectsFactoryHalInterface) {
@@ -195,7 +197,8 @@
static const effect_uuid_t EXTEND_EFFECT_TYPE_UUID = {
0xfa81dbde, 0x588b, 0x11ed, 0x9b6a, {0x02, 0x42, 0xac, 0x12, 0x00, 0x02}};
-
+constexpr std::array<uint8_t, 10> kVendorExtensionData({0xff, 0x5, 0x50, 0xab, 0xcd, 0x00, 0xbd,
+ 0xdb, 0xee, 0xff});
std::vector<EffectParamTestTuple> testPairs = {
std::make_tuple(FX_IID_AEC,
createEffectParamCombination(AEC_PARAM_ECHO_DELAY, 0xff /* echoDelayMs */,
@@ -203,12 +206,9 @@
std::make_tuple(FX_IID_AGC,
createEffectParamCombination(AGC_PARAM_TARGET_LEVEL, 20 /* targetLevel */,
sizeof(int16_t) /* returnValueSize */)),
- std::make_tuple(FX_IID_AGC2, createEffectParamCombination(
- AGC2_PARAM_FIXED_DIGITAL_GAIN, 15 /* digitalGainDb */,
- sizeof(int32_t) /* returnValueSize */)),
std::make_tuple(SL_IID_BASSBOOST,
createEffectParamCombination(BASSBOOST_PARAM_STRENGTH, 20 /* strength */,
- sizeof(int32_t) /* returnValueSize */)),
+ sizeof(int16_t) /* returnValueSize */)),
std::make_tuple(EFFECT_UIID_DOWNMIX,
createEffectParamCombination(DOWNMIX_PARAM_TYPE, DOWNMIX_TYPE_FOLD,
sizeof(int16_t) /* returnValueSize */)),
@@ -217,13 +217,6 @@
std::array<uint32_t, 2>({DP_PARAM_INPUT_GAIN, 0 /* channel */}),
30 /* gainDb */, sizeof(int32_t) /* returnValueSize */)),
std::make_tuple(
- FX_IID_HAPTICGENERATOR,
- createEffectParamCombination(
- HG_PARAM_HAPTIC_INTENSITY,
- std::array<uint32_t, 2>(
- {1, uint32_t(::android::os::HapticScale::HIGH) /* scale */}),
- 0 /* returnValueSize */)),
- std::make_tuple(
FX_IID_LOUDNESS_ENHANCER,
createEffectParamCombination(LOUDNESS_ENHANCER_PARAM_TARGET_GAIN_MB, 5 /* gain */,
sizeof(int32_t) /* returnValueSize */)),
@@ -231,7 +224,8 @@
createEffectParamCombination(NS_PARAM_LEVEL, 1 /* level */,
sizeof(int32_t) /* returnValueSize */)),
std::make_tuple(&EXTEND_EFFECT_TYPE_UUID,
- createEffectParamCombination(1, 0xbead, sizeof(int32_t)))};
+ createEffectParamCombination(8, kVendorExtensionData,
+ sizeof(kVendorExtensionData)))};
class libAudioHalEffectParamTest : public ::testing::TestWithParam<EffectParamTestTuple> {
public:
@@ -255,7 +249,9 @@
}()) {}
void SetUp() override {
- ASSERT_NE(0ul, mDescs.size());
+ if (0ul == mDescs.size()) {
+ GTEST_SKIP() << "Effect type not available on device, skipping";
+ }
for (const auto& desc : mDescs) {
sp<EffectHalInterface> interface = createEffectHal(desc);
ASSERT_NE(nullptr, interface);
@@ -264,9 +260,11 @@
}
void initEffect(const sp<EffectHalInterface>& interface) {
- uint32_t initReply = 0;
- uint32_t initReplySize = sizeof(initReply);
- ASSERT_EQ(OK, interface->command(EFFECT_CMD_INIT, 0, nullptr, &initReplySize, &initReply));
+ uint32_t reply = 0;
+ uint32_t replySize = sizeof(reply);
+ ASSERT_EQ(OK, interface->command(EFFECT_CMD_INIT, 0, nullptr, &replySize, &reply));
+ ASSERT_EQ(OK, interface->command(EFFECT_CMD_SET_CONFIG, sizeof(mEffectConfig),
+ &mEffectConfig, &replySize, &reply));
}
void TearDown() override {
@@ -311,7 +309,7 @@
std::vector<uint8_t> response(mCombination->valueSize);
EXPECT_EQ(OK, parameterGet.readFromValue(response.data(), mCombination->valueSize))
<< " try get valueSize " << mCombination->valueSize << " from "
- << parameterGet.toString();
+ << parameterGet.toString() << " set " << parameterSet->toString();
EXPECT_EQ(response, mExpectedValue);
}
}
@@ -323,6 +321,23 @@
const std::vector<uint8_t> mExpectedValue;
const std::vector<effect_descriptor_t> mDescs;
std::vector<sp<EffectHalInterface>> mHalInterfaces;
+ effect_config_t mEffectConfig = {.inputCfg = {.accessMode = EFFECT_BUFFER_ACCESS_READ,
+ .format = AUDIO_FORMAT_PCM_FLOAT,
+ .bufferProvider.getBuffer = nullptr,
+ .bufferProvider.releaseBuffer = nullptr,
+ .bufferProvider.cookie = nullptr,
+ .mask = EFFECT_CONFIG_ALL,
+ .samplingRate = 48000,
+ .channels = AUDIO_CHANNEL_IN_STEREO},
+
+ .outputCfg = {.accessMode = EFFECT_BUFFER_ACCESS_WRITE,
+ .format = AUDIO_FORMAT_PCM_FLOAT,
+ .bufferProvider.getBuffer = nullptr,
+ .bufferProvider.releaseBuffer = nullptr,
+ .bufferProvider.cookie = nullptr,
+ .mask = EFFECT_CONFIG_ALL,
+ .samplingRate = 48000,
+ .channels = AUDIO_CHANNEL_OUT_STEREO}};
};
TEST_P(libAudioHalEffectParamTest, setAndGetParam) {
@@ -338,7 +353,7 @@
AudioUuid uuid = ::aidl::android::legacy2aidl_audio_uuid_t_AudioUuid(
*std::get<TUPLE_UUID>(info.param))
.value();
- std::string name = "UUID_" + uuid.toString();
+ std::string name = "UUID_" + toString(uuid);
std::replace_if(
name.begin(), name.end(), [](const char c) { return !std::isalnum(c); }, '_');
return name;