Loading media/audioaidlconversion/AidlConversionEffect.cpp +49 −32 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ using ::aidl::android::hardware::audio::effect::Visualizer; using ::aidl::android::media::audio::common::AudioDeviceDescription; using ::android::BAD_VALUE; using ::android::OK; using ::android::base::unexpected; using ::android::effect::utils::EffectParamReader; using ::android::effect::utils::EffectParamWriter; Loading Loading @@ -407,50 +408,66 @@ legacy2aidl_Parameter_Visualizer_uint32_MeasurementMode(uint32_t legacy) { } /** * Copy the entire effect_param_t to DefaultExtension::bytes. * Copy the parameter area of effect_param_t to DefaultExtension::bytes. */ ConversionResult<Parameter> legacy2aidl_EffectParameterReader_ParameterExtension( ConversionResult<VendorExtension> legacy2aidl_EffectParameterReader_Param_VendorExtension( EffectParamReader& param) { size_t len = param.getTotalSize(); DefaultExtension ext; ext.bytes.resize(len); std::memcpy(ext.bytes.data(), ¶m.getEffectParam(), len); size_t len = param.getParameterSize(); DefaultExtension defaultExt; defaultExt.bytes.resize(len); RETURN_IF_ERROR(param.readFromParameter(defaultExt.bytes.data(), len)); VendorExtension effectParam; effectParam.extension.setParcelable(ext); return UNION_MAKE(Parameter, specific, UNION_MAKE(Parameter::Specific, vendorEffect, effectParam)); VendorExtension ext; ext.extension.setParcelable(defaultExt); return ext; } ConversionResult<std::vector<uint8_t>> aidl2legacy_ParameterExtension_vector_uint8( const Parameter& param) { VendorExtension effectParam = VALUE_OR_RETURN( (::aidl::android::getParameterSpecific<Parameter, VendorExtension, Parameter::Specific::vendorEffect>(param))); std::optional<DefaultExtension> ext; if (STATUS_OK != effectParam.extension.getParcelable(&ext) || !ext.has_value()) { /** * 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( EffectParamWriter& param, VendorExtension ext) { std::optional<DefaultExtension> defaultExt; RETURN_IF_ERROR(ext.extension.getParcelable(&defaultExt)); if (!defaultExt.has_value()) { return unexpected(BAD_VALUE); } return ext.value().bytes; RETURN_IF_ERROR(param.writeToValue(defaultExt->bytes.data(), defaultExt->bytes.size())); return OK; } ConversionResult<Parameter> legacy2aidl_EffectParameterReader_ParameterExtension( EffectParamReader& param) { VendorExtension ext = VALUE_OR_RETURN(legacy2aidl_EffectParameterReader_Data_VendorExtension(param)); return UNION_MAKE(Parameter, specific, UNION_MAKE(Parameter::Specific, vendorEffect, ext)); } ConversionResult<::android::status_t> aidl2legacy_ParameterExtension_EffectParameterWriter( const ::aidl::android::hardware::audio::effect::Parameter& aidl, EffectParamWriter& legacy) { const std::vector<uint8_t>& extBytes = VALUE_OR_RETURN_STATUS( ::aidl::android::aidl2legacy_ParameterExtension_vector_uint8(aidl)); if (legacy.getTotalSize() < extBytes.size()) { legacy.setStatus(BAD_VALUE); return unexpected(BAD_VALUE); } // create a reader wrapper and read the content to legacy EffectParamWriter EffectParamReader reader(*(effect_param_t*)extBytes.data()); if (STATUS_OK != legacy.writeToValue(reader.getValueAddress(), reader.getValueSize())) { legacy.setStatus(BAD_VALUE); return unexpected(BAD_VALUE); } return STATUS_OK; 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)); } } // namespace android Loading media/audioaidlconversion/include/media/AidlConversionEffect.h +47 −15 Original line number Diff line number Diff line Loading @@ -46,19 +46,39 @@ ConversionResult<F> getParameterSpecificField(const P& u) { return VALUE_OR_RETURN((unionGetField<T, field>(spec))); } #define GET_PARAMETER_SPECIFIC_FIELD(u, specific, tag, field, fieldType) \ getParameterSpecificField<std::decay_t<decltype(u)>, specific, \ aidl::android::hardware::audio::effect::Parameter::Specific::tag, \ specific::field, fieldType>(u) #define GET_PARAMETER_SPECIFIC_FIELD(_u, _effect, _tag, _field, _fieldType) \ getParameterSpecificField<std::decay_t<decltype(_u)>, _effect, \ aidl::android::hardware::audio::effect::Parameter::Specific::_tag, \ _effect::_field, _fieldType>(_u) #define MAKE_SPECIFIC_PARAMETER(spec, tag, field, value) \ #define MAKE_SPECIFIC_PARAMETER(_spec, _tag, _field, _value) \ UNION_MAKE(aidl::android::hardware::audio::effect::Parameter, specific, \ UNION_MAKE(aidl::android::hardware::audio::effect::Parameter::Specific, tag, \ UNION_MAKE(spec, field, value))) #define MAKE_SPECIFIC_PARAMETER_ID(spec, tag, field) \ UNION_MAKE(aidl::android::hardware::audio::effect::Parameter::Id, tag, \ UNION_MAKE(spec::Id, commonTag, field)) UNION_MAKE(aidl::android::hardware::audio::effect::Parameter::Specific, _tag, \ UNION_MAKE(_spec, _field, _value))) #define MAKE_SPECIFIC_PARAMETER_ID(_spec, _tag, _field) \ UNION_MAKE(aidl::android::hardware::audio::effect::Parameter::Id, _tag, \ UNION_MAKE(_spec::Id, commonTag, _field)) #define MAKE_EXTENSION_PARAMETER_ID(_effect, _tag, _field) \ UNION_MAKE(aidl::android::hardware::audio::effect::Parameter::Id, _tag, \ UNION_MAKE(_effect::Id, vendorExtensionTag, _field)) #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::hardware::audio::effect::Parameter::Id _id = \ MAKE_EXTENSION_PARAMETER_ID(_effect, _tag##Tag, _extId); \ aidl::android::hardware::audio::effect::Parameter _aidlParam; \ RETURN_STATUS_IF_ERROR(statusTFromBinderStatus(mEffect->getParameter(_id, &_aidlParam))); \ aidl::android::hardware::audio::effect::VendorExtension _ext = \ 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)); \ } ConversionResult<uint32_t> aidl2legacy_Flags_Type_uint32( ::aidl::android::hardware::audio::effect::Flags::Type type); Loading Loading @@ -140,11 +160,23 @@ legacy2aidl_Parameter_Visualizer_uint32_MeasurementMode(uint32_t legacy); ConversionResult<::aidl::android::hardware::audio::effect::Parameter> legacy2aidl_EffectParameterReader_ParameterExtension( ::android::effect::utils::EffectParamReader& param); ConversionResult<std::vector<uint8_t>> aidl2legacy_ParameterExtension_vector_uint8( const ::aidl::android::hardware::audio::effect::Parameter& legacy); 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); 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( ::android::effect::utils::EffectParamReader& param); } // namespace android } // namespace aidl media/libaudiohal/impl/effectsAidlConversion/AidlConversionAec.cpp +20 −12 Original line number Diff line number Diff line Loading @@ -33,9 +33,11 @@ namespace android { namespace effect { using ::aidl::android::getParameterSpecificField; using ::aidl::android::aidl_utils::statusTFromBinderStatus; using ::aidl::android::hardware::audio::effect::AcousticEchoCanceler; using ::aidl::android::hardware::audio::effect::Parameter; using ::aidl::android::hardware::audio::effect::VendorExtension; using ::android::status_t; using utils::EffectParamReader; using utils::EffectParamWriter; Loading Loading @@ -64,8 +66,13 @@ status_t AidlConversionAec::setParameter(EffectParamReader& param) { break; } default: { ALOGW("%s unknown param %s", __func__, param.toString().c_str()); return BAD_VALUE; // for vendor extension, copy data area to the DefaultExtension, parameter ignored VendorExtension ext = VALUE_OR_RETURN_STATUS( aidl::android::legacy2aidl_EffectParameterReader_Data_VendorExtension(param)); aidlParam = MAKE_SPECIFIC_PARAMETER(AcousticEchoCanceler, acousticEchoCanceler, vendor, ext); RETURN_STATUS_IF_ERROR(statusTFromBinderStatus(mEffect->setParameter(aidlParam))); break; } } Loading @@ -73,7 +80,7 @@ status_t AidlConversionAec::setParameter(EffectParamReader& param) { } status_t AidlConversionAec::getParameter(EffectParamWriter& param) { uint32_t type = 0, value = 0; uint32_t type = 0; if (!param.validateParamValueSize(sizeof(uint32_t), sizeof(uint32_t)) || OK != param.readFromParameter(&type)) { param.setStatus(BAD_VALUE); Loading @@ -85,29 +92,30 @@ status_t AidlConversionAec::getParameter(EffectParamWriter& param) { case AEC_PARAM_ECHO_DELAY: FALLTHROUGH_INTENDED; case AEC_PARAM_PROPERTIES: { int32_t delay = 0; Parameter::Id id = MAKE_SPECIFIC_PARAMETER_ID(AcousticEchoCanceler, acousticEchoCancelerTag, AcousticEchoCanceler::echoDelayUs); RETURN_STATUS_IF_ERROR(statusTFromBinderStatus(mEffect->getParameter(id, &aidlParam))); value = VALUE_OR_RETURN_STATUS( delay = VALUE_OR_RETURN_STATUS( aidl::android::aidl2legacy_Parameter_aec_uint32_echoDelay(aidlParam)); break; return param.writeToValue(&delay); } case AEC_PARAM_MOBILE_MODE: { int32_t mode = 0; Parameter::Id id = MAKE_SPECIFIC_PARAMETER_ID(AcousticEchoCanceler, acousticEchoCancelerTag, AcousticEchoCanceler::mobileMode); RETURN_STATUS_IF_ERROR(statusTFromBinderStatus(mEffect->getParameter(id, &aidlParam))); value = VALUE_OR_RETURN_STATUS( mode = VALUE_OR_RETURN_STATUS( aidl::android::aidl2legacy_Parameter_aec_uint32_mobileMode(aidlParam)); break; return param.writeToValue(&mode); } default: { // use vendor extension implementation, the first 32bits (param type) won't pass to HAL VENDOR_EXTENSION_GET_AND_RETURN(AcousticEchoCanceler, acousticEchoCanceler, param); } default: // use vendor extension implementation ALOGW("%s unknown param %s", __func__, param.toString().c_str()); return BAD_VALUE; } return param.writeToValue(&value); } } // namespace effect Loading media/libaudiohal/impl/effectsAidlConversion/AidlConversionAgc1.cpp +9 −5 Original line number Diff line number Diff line Loading @@ -33,10 +33,11 @@ namespace android { namespace effect { using ::aidl::android::getParameterSpecificField; using ::aidl::android::aidl_utils::statusTFromBinderStatus; using ::aidl::android::hardware::audio::effect::AutomaticGainControlV1; using ::aidl::android::hardware::audio::effect::Parameter; using ::aidl::android::getParameterSpecificField; using ::aidl::android::hardware::audio::effect::VendorExtension; using ::android::status_t; using utils::EffectParamReader; using utils::EffectParamWriter; Loading Loading @@ -88,8 +89,12 @@ status_t AidlConversionAgc1::setParameter(EffectParamReader& param) { return OK; } default: { ALOGW("%s unknown param %s", __func__, param.toString().c_str()); return BAD_VALUE; // for vendor extension, copy data area to the DefaultExtension, parameter ignored VendorExtension ext = VALUE_OR_RETURN_STATUS( aidl::android::legacy2aidl_EffectParameterReader_Data_VendorExtension(param)); Parameter aidlParam = MAKE_SPECIFIC_PARAMETER(AutomaticGainControlV1, automaticGainControlV1, vendor, ext); return statusTFromBinderStatus(mEffect->setParameter(aidlParam)); } } } Loading Loading @@ -150,8 +155,7 @@ status_t AidlConversionAgc1::getParameter(EffectParamWriter& param) { return OK; } default: { ALOGW("%s unknown param %s", __func__, param.toString().c_str()); return BAD_VALUE; VENDOR_EXTENSION_GET_AND_RETURN(AutomaticGainControlV1, automaticGainControlV1, param); } } } Loading media/libaudiohal/impl/effectsAidlConversion/AidlConversionAgc2.cpp +9 −4 Original line number Diff line number Diff line Loading @@ -33,9 +33,11 @@ namespace android { namespace effect { using ::aidl::android::getParameterSpecificField; using ::aidl::android::aidl_utils::statusTFromBinderStatus; using ::aidl::android::hardware::audio::effect::AutomaticGainControlV2; using ::aidl::android::hardware::audio::effect::Parameter; using ::aidl::android::hardware::audio::effect::VendorExtension; using ::android::status_t; using utils::EffectParamReader; using utils::EffectParamWriter; Loading Loading @@ -65,8 +67,12 @@ status_t AidlConversionAgc2::setParameter(EffectParamReader& param) { break; } default: { ALOGW("%s unknown param %s", __func__, param.toString().c_str()); return BAD_VALUE; // for vendor extension, copy data area to the DefaultExtension, parameter ignored VendorExtension ext = VALUE_OR_RETURN_STATUS( aidl::android::legacy2aidl_EffectParameterReader_Data_VendorExtension(param)); aidlParam = MAKE_SPECIFIC_PARAMETER(AutomaticGainControlV2, automaticGainControlV2, vendor, ext); break; } } Loading Loading @@ -110,8 +116,7 @@ status_t AidlConversionAgc2::getParameter(EffectParamWriter& param) { break; } default: { ALOGW("%s unknown param %s", __func__, param.toString().c_str()); return BAD_VALUE; VENDOR_EXTENSION_GET_AND_RETURN(AutomaticGainControlV2, automaticGainControlV2, param); } } Loading Loading
media/audioaidlconversion/AidlConversionEffect.cpp +49 −32 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ using ::aidl::android::hardware::audio::effect::Visualizer; using ::aidl::android::media::audio::common::AudioDeviceDescription; using ::android::BAD_VALUE; using ::android::OK; using ::android::base::unexpected; using ::android::effect::utils::EffectParamReader; using ::android::effect::utils::EffectParamWriter; Loading Loading @@ -407,50 +408,66 @@ legacy2aidl_Parameter_Visualizer_uint32_MeasurementMode(uint32_t legacy) { } /** * Copy the entire effect_param_t to DefaultExtension::bytes. * Copy the parameter area of effect_param_t to DefaultExtension::bytes. */ ConversionResult<Parameter> legacy2aidl_EffectParameterReader_ParameterExtension( ConversionResult<VendorExtension> legacy2aidl_EffectParameterReader_Param_VendorExtension( EffectParamReader& param) { size_t len = param.getTotalSize(); DefaultExtension ext; ext.bytes.resize(len); std::memcpy(ext.bytes.data(), ¶m.getEffectParam(), len); size_t len = param.getParameterSize(); DefaultExtension defaultExt; defaultExt.bytes.resize(len); RETURN_IF_ERROR(param.readFromParameter(defaultExt.bytes.data(), len)); VendorExtension effectParam; effectParam.extension.setParcelable(ext); return UNION_MAKE(Parameter, specific, UNION_MAKE(Parameter::Specific, vendorEffect, effectParam)); VendorExtension ext; ext.extension.setParcelable(defaultExt); return ext; } ConversionResult<std::vector<uint8_t>> aidl2legacy_ParameterExtension_vector_uint8( const Parameter& param) { VendorExtension effectParam = VALUE_OR_RETURN( (::aidl::android::getParameterSpecific<Parameter, VendorExtension, Parameter::Specific::vendorEffect>(param))); std::optional<DefaultExtension> ext; if (STATUS_OK != effectParam.extension.getParcelable(&ext) || !ext.has_value()) { /** * 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( EffectParamWriter& param, VendorExtension ext) { std::optional<DefaultExtension> defaultExt; RETURN_IF_ERROR(ext.extension.getParcelable(&defaultExt)); if (!defaultExt.has_value()) { return unexpected(BAD_VALUE); } return ext.value().bytes; RETURN_IF_ERROR(param.writeToValue(defaultExt->bytes.data(), defaultExt->bytes.size())); return OK; } ConversionResult<Parameter> legacy2aidl_EffectParameterReader_ParameterExtension( EffectParamReader& param) { VendorExtension ext = VALUE_OR_RETURN(legacy2aidl_EffectParameterReader_Data_VendorExtension(param)); return UNION_MAKE(Parameter, specific, UNION_MAKE(Parameter::Specific, vendorEffect, ext)); } ConversionResult<::android::status_t> aidl2legacy_ParameterExtension_EffectParameterWriter( const ::aidl::android::hardware::audio::effect::Parameter& aidl, EffectParamWriter& legacy) { const std::vector<uint8_t>& extBytes = VALUE_OR_RETURN_STATUS( ::aidl::android::aidl2legacy_ParameterExtension_vector_uint8(aidl)); if (legacy.getTotalSize() < extBytes.size()) { legacy.setStatus(BAD_VALUE); return unexpected(BAD_VALUE); } // create a reader wrapper and read the content to legacy EffectParamWriter EffectParamReader reader(*(effect_param_t*)extBytes.data()); if (STATUS_OK != legacy.writeToValue(reader.getValueAddress(), reader.getValueSize())) { legacy.setStatus(BAD_VALUE); return unexpected(BAD_VALUE); } return STATUS_OK; 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)); } } // namespace android Loading
media/audioaidlconversion/include/media/AidlConversionEffect.h +47 −15 Original line number Diff line number Diff line Loading @@ -46,19 +46,39 @@ ConversionResult<F> getParameterSpecificField(const P& u) { return VALUE_OR_RETURN((unionGetField<T, field>(spec))); } #define GET_PARAMETER_SPECIFIC_FIELD(u, specific, tag, field, fieldType) \ getParameterSpecificField<std::decay_t<decltype(u)>, specific, \ aidl::android::hardware::audio::effect::Parameter::Specific::tag, \ specific::field, fieldType>(u) #define GET_PARAMETER_SPECIFIC_FIELD(_u, _effect, _tag, _field, _fieldType) \ getParameterSpecificField<std::decay_t<decltype(_u)>, _effect, \ aidl::android::hardware::audio::effect::Parameter::Specific::_tag, \ _effect::_field, _fieldType>(_u) #define MAKE_SPECIFIC_PARAMETER(spec, tag, field, value) \ #define MAKE_SPECIFIC_PARAMETER(_spec, _tag, _field, _value) \ UNION_MAKE(aidl::android::hardware::audio::effect::Parameter, specific, \ UNION_MAKE(aidl::android::hardware::audio::effect::Parameter::Specific, tag, \ UNION_MAKE(spec, field, value))) #define MAKE_SPECIFIC_PARAMETER_ID(spec, tag, field) \ UNION_MAKE(aidl::android::hardware::audio::effect::Parameter::Id, tag, \ UNION_MAKE(spec::Id, commonTag, field)) UNION_MAKE(aidl::android::hardware::audio::effect::Parameter::Specific, _tag, \ UNION_MAKE(_spec, _field, _value))) #define MAKE_SPECIFIC_PARAMETER_ID(_spec, _tag, _field) \ UNION_MAKE(aidl::android::hardware::audio::effect::Parameter::Id, _tag, \ UNION_MAKE(_spec::Id, commonTag, _field)) #define MAKE_EXTENSION_PARAMETER_ID(_effect, _tag, _field) \ UNION_MAKE(aidl::android::hardware::audio::effect::Parameter::Id, _tag, \ UNION_MAKE(_effect::Id, vendorExtensionTag, _field)) #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::hardware::audio::effect::Parameter::Id _id = \ MAKE_EXTENSION_PARAMETER_ID(_effect, _tag##Tag, _extId); \ aidl::android::hardware::audio::effect::Parameter _aidlParam; \ RETURN_STATUS_IF_ERROR(statusTFromBinderStatus(mEffect->getParameter(_id, &_aidlParam))); \ aidl::android::hardware::audio::effect::VendorExtension _ext = \ 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)); \ } ConversionResult<uint32_t> aidl2legacy_Flags_Type_uint32( ::aidl::android::hardware::audio::effect::Flags::Type type); Loading Loading @@ -140,11 +160,23 @@ legacy2aidl_Parameter_Visualizer_uint32_MeasurementMode(uint32_t legacy); ConversionResult<::aidl::android::hardware::audio::effect::Parameter> legacy2aidl_EffectParameterReader_ParameterExtension( ::android::effect::utils::EffectParamReader& param); ConversionResult<std::vector<uint8_t>> aidl2legacy_ParameterExtension_vector_uint8( const ::aidl::android::hardware::audio::effect::Parameter& legacy); 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); 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( ::android::effect::utils::EffectParamReader& param); } // namespace android } // namespace aidl
media/libaudiohal/impl/effectsAidlConversion/AidlConversionAec.cpp +20 −12 Original line number Diff line number Diff line Loading @@ -33,9 +33,11 @@ namespace android { namespace effect { using ::aidl::android::getParameterSpecificField; using ::aidl::android::aidl_utils::statusTFromBinderStatus; using ::aidl::android::hardware::audio::effect::AcousticEchoCanceler; using ::aidl::android::hardware::audio::effect::Parameter; using ::aidl::android::hardware::audio::effect::VendorExtension; using ::android::status_t; using utils::EffectParamReader; using utils::EffectParamWriter; Loading Loading @@ -64,8 +66,13 @@ status_t AidlConversionAec::setParameter(EffectParamReader& param) { break; } default: { ALOGW("%s unknown param %s", __func__, param.toString().c_str()); return BAD_VALUE; // for vendor extension, copy data area to the DefaultExtension, parameter ignored VendorExtension ext = VALUE_OR_RETURN_STATUS( aidl::android::legacy2aidl_EffectParameterReader_Data_VendorExtension(param)); aidlParam = MAKE_SPECIFIC_PARAMETER(AcousticEchoCanceler, acousticEchoCanceler, vendor, ext); RETURN_STATUS_IF_ERROR(statusTFromBinderStatus(mEffect->setParameter(aidlParam))); break; } } Loading @@ -73,7 +80,7 @@ status_t AidlConversionAec::setParameter(EffectParamReader& param) { } status_t AidlConversionAec::getParameter(EffectParamWriter& param) { uint32_t type = 0, value = 0; uint32_t type = 0; if (!param.validateParamValueSize(sizeof(uint32_t), sizeof(uint32_t)) || OK != param.readFromParameter(&type)) { param.setStatus(BAD_VALUE); Loading @@ -85,29 +92,30 @@ status_t AidlConversionAec::getParameter(EffectParamWriter& param) { case AEC_PARAM_ECHO_DELAY: FALLTHROUGH_INTENDED; case AEC_PARAM_PROPERTIES: { int32_t delay = 0; Parameter::Id id = MAKE_SPECIFIC_PARAMETER_ID(AcousticEchoCanceler, acousticEchoCancelerTag, AcousticEchoCanceler::echoDelayUs); RETURN_STATUS_IF_ERROR(statusTFromBinderStatus(mEffect->getParameter(id, &aidlParam))); value = VALUE_OR_RETURN_STATUS( delay = VALUE_OR_RETURN_STATUS( aidl::android::aidl2legacy_Parameter_aec_uint32_echoDelay(aidlParam)); break; return param.writeToValue(&delay); } case AEC_PARAM_MOBILE_MODE: { int32_t mode = 0; Parameter::Id id = MAKE_SPECIFIC_PARAMETER_ID(AcousticEchoCanceler, acousticEchoCancelerTag, AcousticEchoCanceler::mobileMode); RETURN_STATUS_IF_ERROR(statusTFromBinderStatus(mEffect->getParameter(id, &aidlParam))); value = VALUE_OR_RETURN_STATUS( mode = VALUE_OR_RETURN_STATUS( aidl::android::aidl2legacy_Parameter_aec_uint32_mobileMode(aidlParam)); break; return param.writeToValue(&mode); } default: { // use vendor extension implementation, the first 32bits (param type) won't pass to HAL VENDOR_EXTENSION_GET_AND_RETURN(AcousticEchoCanceler, acousticEchoCanceler, param); } default: // use vendor extension implementation ALOGW("%s unknown param %s", __func__, param.toString().c_str()); return BAD_VALUE; } return param.writeToValue(&value); } } // namespace effect Loading
media/libaudiohal/impl/effectsAidlConversion/AidlConversionAgc1.cpp +9 −5 Original line number Diff line number Diff line Loading @@ -33,10 +33,11 @@ namespace android { namespace effect { using ::aidl::android::getParameterSpecificField; using ::aidl::android::aidl_utils::statusTFromBinderStatus; using ::aidl::android::hardware::audio::effect::AutomaticGainControlV1; using ::aidl::android::hardware::audio::effect::Parameter; using ::aidl::android::getParameterSpecificField; using ::aidl::android::hardware::audio::effect::VendorExtension; using ::android::status_t; using utils::EffectParamReader; using utils::EffectParamWriter; Loading Loading @@ -88,8 +89,12 @@ status_t AidlConversionAgc1::setParameter(EffectParamReader& param) { return OK; } default: { ALOGW("%s unknown param %s", __func__, param.toString().c_str()); return BAD_VALUE; // for vendor extension, copy data area to the DefaultExtension, parameter ignored VendorExtension ext = VALUE_OR_RETURN_STATUS( aidl::android::legacy2aidl_EffectParameterReader_Data_VendorExtension(param)); Parameter aidlParam = MAKE_SPECIFIC_PARAMETER(AutomaticGainControlV1, automaticGainControlV1, vendor, ext); return statusTFromBinderStatus(mEffect->setParameter(aidlParam)); } } } Loading Loading @@ -150,8 +155,7 @@ status_t AidlConversionAgc1::getParameter(EffectParamWriter& param) { return OK; } default: { ALOGW("%s unknown param %s", __func__, param.toString().c_str()); return BAD_VALUE; VENDOR_EXTENSION_GET_AND_RETURN(AutomaticGainControlV1, automaticGainControlV1, param); } } } Loading
media/libaudiohal/impl/effectsAidlConversion/AidlConversionAgc2.cpp +9 −4 Original line number Diff line number Diff line Loading @@ -33,9 +33,11 @@ namespace android { namespace effect { using ::aidl::android::getParameterSpecificField; using ::aidl::android::aidl_utils::statusTFromBinderStatus; using ::aidl::android::hardware::audio::effect::AutomaticGainControlV2; using ::aidl::android::hardware::audio::effect::Parameter; using ::aidl::android::hardware::audio::effect::VendorExtension; using ::android::status_t; using utils::EffectParamReader; using utils::EffectParamWriter; Loading Loading @@ -65,8 +67,12 @@ status_t AidlConversionAgc2::setParameter(EffectParamReader& param) { break; } default: { ALOGW("%s unknown param %s", __func__, param.toString().c_str()); return BAD_VALUE; // for vendor extension, copy data area to the DefaultExtension, parameter ignored VendorExtension ext = VALUE_OR_RETURN_STATUS( aidl::android::legacy2aidl_EffectParameterReader_Data_VendorExtension(param)); aidlParam = MAKE_SPECIFIC_PARAMETER(AutomaticGainControlV2, automaticGainControlV2, vendor, ext); break; } } Loading Loading @@ -110,8 +116,7 @@ status_t AidlConversionAgc2::getParameter(EffectParamWriter& param) { break; } default: { ALOGW("%s unknown param %s", __func__, param.toString().c_str()); return BAD_VALUE; VENDOR_EXTENSION_GET_AND_RETURN(AutomaticGainControlV2, automaticGainControlV2, param); } } Loading