Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3f7b1ddf authored by Shunkai Yao's avatar Shunkai Yao Committed by Gerrit Code Review
Browse files

Merge "Support passing entire effect_param_t as vendor extension"

parents dc438d78 dbd06943
Loading
Loading
Loading
Loading
+31 −42
Original line number Diff line number Diff line
@@ -52,6 +52,7 @@ using ::android::OK;
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 @@ legacy2aidl_Parameter_Visualizer_uint32_MeasurementMode(uint32_t legacy) {
    }
}

/**
 * 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 @@ ConversionResult<status_t> aidl2legacy_VendorExtension_EffectParameterWriter_Dat
        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 *)&param.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
+18 −19
Original line number Diff line number Diff line
@@ -67,7 +67,7 @@ ConversionResult<F> getParameterSpecificField(const P& u) {
#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 @@ ConversionResult<F> getParameterSpecificField(const P& u) {
                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<uint32_t> aidl2legacy_Parameter_Visualizer_MeasurementMode_uint
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
+1 −1
Original line number Diff line number Diff line
@@ -67,7 +67,7 @@ status_t AidlConversionAec::setParameter(EffectParamReader& param) {
        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)));
+1 −1
Original line number Diff line number Diff line
@@ -90,7 +90,7 @@ status_t AidlConversionAgc1::setParameter(EffectParamReader& param) {
        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));
+1 −1
Original line number Diff line number Diff line
@@ -68,7 +68,7 @@ status_t AidlConversionAgc2::setParameter(EffectParamReader& param) {
        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;
Loading