Loading media/libaudiohal/impl/effectsAidlConversion/AidlConversionBassBoost.cpp +6 −4 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ #include <media/AidlConversionNdk.h> #include <media/AidlConversionEffect.h> #include <media/audiohal/AudioEffectUuid.h> #include <system/audio_effects/aidl_effects_utils.h> #include <system/audio_effects/effect_bassboost.h> #include <utils/Log.h> Loading @@ -37,6 +38,7 @@ using ::aidl::android::convertIntegral; using ::aidl::android::aidl_utils::statusTFromBinderStatus; using ::aidl::android::hardware::audio::effect::BassBoost; using ::aidl::android::hardware::audio::effect::Parameter; using ::aidl::android::hardware::audio::effect::Range; using ::android::status_t; using utils::EffectParamReader; using utils::EffectParamWriter; Loading Loading @@ -89,10 +91,10 @@ status_t AidlConversionBassBoost::getParameter(EffectParamWriter& param) { return param.writeToValue(&value); } case BASSBOOST_PARAM_STRENGTH_SUPPORTED: { uint16_t value; const auto& cap = VALUE_OR_RETURN_STATUS(aidl::android::UNION_GET(mDesc.capability, bassBoost)); value = VALUE_OR_RETURN_STATUS(convertIntegral<uint32_t>(cap.strengthSupported)); // an invalid range indicates not setting support for this parameter uint16_t value = ::aidl::android::hardware::audio::effect::isRangeValid<Range::Tag::bassBoost>( BassBoost::strengthPm, mDesc.capability); return param.writeToValue(&value); } default: { Loading media/libaudiohal/impl/effectsAidlConversion/AidlConversionDynamicsProcessing.cpp +0 −2 Original line number Diff line number Diff line Loading @@ -147,8 +147,6 @@ status_t AidlConversionDp::getParameter(EffectParamWriter& param) { DynamicsProcessing::inputGain); RETURN_STATUS_IF_ERROR(statusTFromBinderStatus(mEffect->getParameter(id, &aidlParam))); DynamicsProcessing::Capability cap = mDesc.capability.get<Capability::dynamicsProcessing>(); std::vector<DynamicsProcessing::InputGain> gains = VALUE_OR_RETURN_STATUS(aidl::android::GET_PARAMETER_SPECIFIC_FIELD( aidlParam, DynamicsProcessing, dynamicsProcessing, Loading media/libeffects/dynamicsproc/aidl/DynamicsProcessing.cpp +30 −4 Original line number Diff line number Diff line Loading @@ -59,8 +59,34 @@ extern "C" binder_exception_t queryEffect(const AudioUuid* in_impl_uuid, Descrip namespace aidl::android::hardware::audio::effect { const std::string DynamicsProcessingImpl::kEffectName = "DynamicsProcessing"; const DynamicsProcessing::Capability DynamicsProcessingImpl::kCapability = {.minCutOffFreq = 220, .maxCutOffFreq = 20000}; const DynamicsProcessing::EqBandConfig DynamicsProcessingImpl::kEqBandConfigMin = DynamicsProcessing::EqBandConfig({.channel = 0, .band = 0, .enable = false, .cutoffFrequencyHz = 220, .gainDb = std::numeric_limits<float>::min()}); const DynamicsProcessing::EqBandConfig DynamicsProcessingImpl::kEqBandConfigMax = DynamicsProcessing::EqBandConfig({.channel = std::numeric_limits<int>::max(), .band = std::numeric_limits<int>::max(), .enable = true, .cutoffFrequencyHz = 20000, .gainDb = std::numeric_limits<float>::max()}); const Range::DynamicsProcessingRange DynamicsProcessingImpl::kPreEqBandRange = { .min = DynamicsProcessing::make<DynamicsProcessing::preEqBand>( {DynamicsProcessingImpl::kEqBandConfigMin}), .max = DynamicsProcessing::make<DynamicsProcessing::preEqBand>( {DynamicsProcessingImpl::kEqBandConfigMax})}; const Range::DynamicsProcessingRange DynamicsProcessingImpl::kPostEqBandRange = { .min = DynamicsProcessing::make<DynamicsProcessing::postEqBand>( {DynamicsProcessingImpl::kEqBandConfigMin}), .max = DynamicsProcessing::make<DynamicsProcessing::postEqBand>( {DynamicsProcessingImpl::kEqBandConfigMax})}; const Range DynamicsProcessingImpl::kRange = Range::make<Range::dynamicsProcessing>({DynamicsProcessingImpl::kPreEqBandRange}); const Capability DynamicsProcessingImpl::kCapability = {.range = {DynamicsProcessingImpl::kRange}}; const Descriptor DynamicsProcessingImpl::kDescriptor = { .common = {.id = {.type = kDynamicsProcessingTypeUUID, .uuid = kDynamicsProcessingImplUUID, Loading @@ -70,8 +96,7 @@ const Descriptor DynamicsProcessingImpl::kDescriptor = { .volume = Flags::Volume::CTRL}, .name = DynamicsProcessingImpl::kEffectName, .implementor = "The Android Open Source Project"}, .capability = Capability::make<Capability::dynamicsProcessing>( DynamicsProcessingImpl::kCapability)}; .capability = DynamicsProcessingImpl::kCapability}; ndk::ScopedAStatus DynamicsProcessingImpl::open(const Parameter::Common& common, const std::optional<Parameter::Specific>& specific, Loading Loading @@ -138,6 +163,7 @@ ndk::ScopedAStatus DynamicsProcessingImpl::setParameterSpecific( RETURN_IF(!mContext, EX_NULL_POINTER, "nullContext"); auto& param = specific.get<Parameter::Specific::dynamicsProcessing>(); // TODO: check range here, dynamicsProcessing need customized method for nested parameters. auto tag = param.getTag(); switch (tag) { Loading media/libeffects/dynamicsproc/aidl/DynamicsProcessing.h +6 −1 Original line number Diff line number Diff line Loading @@ -28,7 +28,7 @@ class DynamicsProcessingImpl final : public EffectImpl { public: static const std::string kEffectName; static const Descriptor kDescriptor; static const DynamicsProcessing::Capability kCapability; static const Capability kCapability; DynamicsProcessingImpl() { LOG(DEBUG) << __func__; } ~DynamicsProcessingImpl() { Loading @@ -52,6 +52,11 @@ class DynamicsProcessingImpl final : public EffectImpl { std::string getEffectName() override { return kEffectName; } private: static const DynamicsProcessing::EqBandConfig kEqBandConfigMin; static const DynamicsProcessing::EqBandConfig kEqBandConfigMax; static const Range::DynamicsProcessingRange kPreEqBandRange; static const Range::DynamicsProcessingRange kPostEqBandRange; static const Range kRange; std::shared_ptr<DynamicsProcessingContext> mContext; ndk::ScopedAStatus getParameterDynamicsProcessing(const DynamicsProcessing::Tag& tag, Parameter::Specific* specific); Loading media/libeffects/dynamicsproc/aidl/DynamicsProcessingContext.cpp +5 −11 Original line number Diff line number Diff line Loading @@ -420,24 +420,18 @@ bool DynamicsProcessingContext::validateEngineConfig( validateStageEnablement(engine.postEqStage) && validateStageEnablement(engine.mbcStage); } inline bool DynamicsProcessingContext::validateCutoffFrequency(float freq) { return freq >= DynamicsProcessingImpl::kCapability.minCutOffFreq && freq <= DynamicsProcessingImpl::kCapability.maxCutOffFreq; } bool DynamicsProcessingContext::validateEqBandConfig(const DynamicsProcessing::EqBandConfig& band, int maxChannel, int maxBand) { return validateChannel(band.channel, maxChannel) && validateBand(band.band, maxBand) && validateCutoffFrequency(band.cutoffFrequencyHz); return validateChannel(band.channel, maxChannel) && validateBand(band.band, maxBand); } bool DynamicsProcessingContext::validateMbcBandConfig(const DynamicsProcessing::MbcBandConfig& band, int maxChannel, int maxBand) { return validateChannel(band.channel, maxChannel) && validateBand(band.band, maxBand) && validateCutoffFrequency(band.cutoffFrequencyHz) && validateTime(band.attackTimeMs) && validateTime(band.releaseTimeMs) && validateRatio(band.ratio) && validateBandDb(band.thresholdDb) && validateBandDb(band.kneeWidthDb) && validateBandDb(band.noiseGateThresholdDb) && validateRatio(band.expanderRatio); validateTime(band.attackTimeMs) && validateTime(band.releaseTimeMs) && validateRatio(band.ratio) && validateBandDb(band.thresholdDb) && validateBandDb(band.kneeWidthDb) && validateBandDb(band.noiseGateThresholdDb) && validateRatio(band.expanderRatio); } bool DynamicsProcessingContext::validateLimiterConfig( Loading Loading
media/libaudiohal/impl/effectsAidlConversion/AidlConversionBassBoost.cpp +6 −4 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ #include <media/AidlConversionNdk.h> #include <media/AidlConversionEffect.h> #include <media/audiohal/AudioEffectUuid.h> #include <system/audio_effects/aidl_effects_utils.h> #include <system/audio_effects/effect_bassboost.h> #include <utils/Log.h> Loading @@ -37,6 +38,7 @@ using ::aidl::android::convertIntegral; using ::aidl::android::aidl_utils::statusTFromBinderStatus; using ::aidl::android::hardware::audio::effect::BassBoost; using ::aidl::android::hardware::audio::effect::Parameter; using ::aidl::android::hardware::audio::effect::Range; using ::android::status_t; using utils::EffectParamReader; using utils::EffectParamWriter; Loading Loading @@ -89,10 +91,10 @@ status_t AidlConversionBassBoost::getParameter(EffectParamWriter& param) { return param.writeToValue(&value); } case BASSBOOST_PARAM_STRENGTH_SUPPORTED: { uint16_t value; const auto& cap = VALUE_OR_RETURN_STATUS(aidl::android::UNION_GET(mDesc.capability, bassBoost)); value = VALUE_OR_RETURN_STATUS(convertIntegral<uint32_t>(cap.strengthSupported)); // an invalid range indicates not setting support for this parameter uint16_t value = ::aidl::android::hardware::audio::effect::isRangeValid<Range::Tag::bassBoost>( BassBoost::strengthPm, mDesc.capability); return param.writeToValue(&value); } default: { Loading
media/libaudiohal/impl/effectsAidlConversion/AidlConversionDynamicsProcessing.cpp +0 −2 Original line number Diff line number Diff line Loading @@ -147,8 +147,6 @@ status_t AidlConversionDp::getParameter(EffectParamWriter& param) { DynamicsProcessing::inputGain); RETURN_STATUS_IF_ERROR(statusTFromBinderStatus(mEffect->getParameter(id, &aidlParam))); DynamicsProcessing::Capability cap = mDesc.capability.get<Capability::dynamicsProcessing>(); std::vector<DynamicsProcessing::InputGain> gains = VALUE_OR_RETURN_STATUS(aidl::android::GET_PARAMETER_SPECIFIC_FIELD( aidlParam, DynamicsProcessing, dynamicsProcessing, Loading
media/libeffects/dynamicsproc/aidl/DynamicsProcessing.cpp +30 −4 Original line number Diff line number Diff line Loading @@ -59,8 +59,34 @@ extern "C" binder_exception_t queryEffect(const AudioUuid* in_impl_uuid, Descrip namespace aidl::android::hardware::audio::effect { const std::string DynamicsProcessingImpl::kEffectName = "DynamicsProcessing"; const DynamicsProcessing::Capability DynamicsProcessingImpl::kCapability = {.minCutOffFreq = 220, .maxCutOffFreq = 20000}; const DynamicsProcessing::EqBandConfig DynamicsProcessingImpl::kEqBandConfigMin = DynamicsProcessing::EqBandConfig({.channel = 0, .band = 0, .enable = false, .cutoffFrequencyHz = 220, .gainDb = std::numeric_limits<float>::min()}); const DynamicsProcessing::EqBandConfig DynamicsProcessingImpl::kEqBandConfigMax = DynamicsProcessing::EqBandConfig({.channel = std::numeric_limits<int>::max(), .band = std::numeric_limits<int>::max(), .enable = true, .cutoffFrequencyHz = 20000, .gainDb = std::numeric_limits<float>::max()}); const Range::DynamicsProcessingRange DynamicsProcessingImpl::kPreEqBandRange = { .min = DynamicsProcessing::make<DynamicsProcessing::preEqBand>( {DynamicsProcessingImpl::kEqBandConfigMin}), .max = DynamicsProcessing::make<DynamicsProcessing::preEqBand>( {DynamicsProcessingImpl::kEqBandConfigMax})}; const Range::DynamicsProcessingRange DynamicsProcessingImpl::kPostEqBandRange = { .min = DynamicsProcessing::make<DynamicsProcessing::postEqBand>( {DynamicsProcessingImpl::kEqBandConfigMin}), .max = DynamicsProcessing::make<DynamicsProcessing::postEqBand>( {DynamicsProcessingImpl::kEqBandConfigMax})}; const Range DynamicsProcessingImpl::kRange = Range::make<Range::dynamicsProcessing>({DynamicsProcessingImpl::kPreEqBandRange}); const Capability DynamicsProcessingImpl::kCapability = {.range = {DynamicsProcessingImpl::kRange}}; const Descriptor DynamicsProcessingImpl::kDescriptor = { .common = {.id = {.type = kDynamicsProcessingTypeUUID, .uuid = kDynamicsProcessingImplUUID, Loading @@ -70,8 +96,7 @@ const Descriptor DynamicsProcessingImpl::kDescriptor = { .volume = Flags::Volume::CTRL}, .name = DynamicsProcessingImpl::kEffectName, .implementor = "The Android Open Source Project"}, .capability = Capability::make<Capability::dynamicsProcessing>( DynamicsProcessingImpl::kCapability)}; .capability = DynamicsProcessingImpl::kCapability}; ndk::ScopedAStatus DynamicsProcessingImpl::open(const Parameter::Common& common, const std::optional<Parameter::Specific>& specific, Loading Loading @@ -138,6 +163,7 @@ ndk::ScopedAStatus DynamicsProcessingImpl::setParameterSpecific( RETURN_IF(!mContext, EX_NULL_POINTER, "nullContext"); auto& param = specific.get<Parameter::Specific::dynamicsProcessing>(); // TODO: check range here, dynamicsProcessing need customized method for nested parameters. auto tag = param.getTag(); switch (tag) { Loading
media/libeffects/dynamicsproc/aidl/DynamicsProcessing.h +6 −1 Original line number Diff line number Diff line Loading @@ -28,7 +28,7 @@ class DynamicsProcessingImpl final : public EffectImpl { public: static const std::string kEffectName; static const Descriptor kDescriptor; static const DynamicsProcessing::Capability kCapability; static const Capability kCapability; DynamicsProcessingImpl() { LOG(DEBUG) << __func__; } ~DynamicsProcessingImpl() { Loading @@ -52,6 +52,11 @@ class DynamicsProcessingImpl final : public EffectImpl { std::string getEffectName() override { return kEffectName; } private: static const DynamicsProcessing::EqBandConfig kEqBandConfigMin; static const DynamicsProcessing::EqBandConfig kEqBandConfigMax; static const Range::DynamicsProcessingRange kPreEqBandRange; static const Range::DynamicsProcessingRange kPostEqBandRange; static const Range kRange; std::shared_ptr<DynamicsProcessingContext> mContext; ndk::ScopedAStatus getParameterDynamicsProcessing(const DynamicsProcessing::Tag& tag, Parameter::Specific* specific); Loading
media/libeffects/dynamicsproc/aidl/DynamicsProcessingContext.cpp +5 −11 Original line number Diff line number Diff line Loading @@ -420,24 +420,18 @@ bool DynamicsProcessingContext::validateEngineConfig( validateStageEnablement(engine.postEqStage) && validateStageEnablement(engine.mbcStage); } inline bool DynamicsProcessingContext::validateCutoffFrequency(float freq) { return freq >= DynamicsProcessingImpl::kCapability.minCutOffFreq && freq <= DynamicsProcessingImpl::kCapability.maxCutOffFreq; } bool DynamicsProcessingContext::validateEqBandConfig(const DynamicsProcessing::EqBandConfig& band, int maxChannel, int maxBand) { return validateChannel(band.channel, maxChannel) && validateBand(band.band, maxBand) && validateCutoffFrequency(band.cutoffFrequencyHz); return validateChannel(band.channel, maxChannel) && validateBand(band.band, maxBand); } bool DynamicsProcessingContext::validateMbcBandConfig(const DynamicsProcessing::MbcBandConfig& band, int maxChannel, int maxBand) { return validateChannel(band.channel, maxChannel) && validateBand(band.band, maxBand) && validateCutoffFrequency(band.cutoffFrequencyHz) && validateTime(band.attackTimeMs) && validateTime(band.releaseTimeMs) && validateRatio(band.ratio) && validateBandDb(band.thresholdDb) && validateBandDb(band.kneeWidthDb) && validateBandDb(band.noiseGateThresholdDb) && validateRatio(band.expanderRatio); validateTime(band.attackTimeMs) && validateTime(band.releaseTimeMs) && validateRatio(band.ratio) && validateBandDb(band.thresholdDb) && validateBandDb(band.kneeWidthDb) && validateBandDb(band.noiseGateThresholdDb) && validateRatio(band.expanderRatio); } bool DynamicsProcessingContext::validateLimiterConfig( Loading