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

Commit 8ec251c9 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix volume value and DPE range" into main

parents 2bda77e0 a5b45b11
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -105,14 +105,14 @@ static const DynamicsProcessing::EqBandConfig kEqBandConfigMin =
        DynamicsProcessing::EqBandConfig({.channel = 0,
                                          .band = 0,
                                          .enable = false,
                                          .cutoffFrequencyHz = 20,
                                          .cutoffFrequencyHz = 0,
                                          .gainDb = -200});

static const DynamicsProcessing::EqBandConfig kEqBandConfigMax =
        DynamicsProcessing::EqBandConfig({.channel = std::numeric_limits<int>::max(),
                                          .band = std::numeric_limits<int>::max(),
                                          .enable = true,
                                          .cutoffFrequencyHz = 20000.1,
                                          .cutoffFrequencyHz = 192000,
                                          .gainDb = 200});

static const Range::DynamicsProcessingRange kPreEqBandConfigRange = {
@@ -129,7 +129,7 @@ static const Range::DynamicsProcessingRange kMbcBandConfigRange = {
                        {.channel = 0,
                         .band = 0,
                         .enable = false,
                         .cutoffFrequencyHz = 20,
                         .cutoffFrequencyHz = 0,
                         .attackTimeMs = 0,
                         .releaseTimeMs = 0,
                         .ratio = 1,
@@ -144,7 +144,7 @@ static const Range::DynamicsProcessingRange kMbcBandConfigRange = {
                        {.channel = std::numeric_limits<int>::max(),
                         .band = std::numeric_limits<int>::max(),
                         .enable = true,
                         .cutoffFrequencyHz = 20000.1,
                         .cutoffFrequencyHz = 192000,
                         .attackTimeMs = 60000,
                         .releaseTimeMs = 60000,
                         .ratio = 50,
@@ -443,7 +443,7 @@ RetCode DynamicsProcessingImpl::releaseContext() {
IEffect::Status DynamicsProcessingImpl::effectProcessImpl(float* in, float* out, int samples) {
    IEffect::Status status = {EX_NULL_POINTER, 0, 0};
    RETURN_VALUE_IF(!mContext, status, "nullContext");
    return mContext->lvmProcess(in, out, samples);
    return mContext->dpeProcess(in, out, samples);
}

}  // namespace aidl::android::hardware::audio::effect
+24 −1
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@
#include "DynamicsProcessingContext.h"
#include "DynamicsProcessing.h"

#include <audio_utils/power.h>
#include <sys/param.h>
#include <functional>
#include <unordered_set>
@@ -68,6 +69,23 @@ RetCode DynamicsProcessingContext::setCommon(const Parameter::Common& common) {
    return RetCode::SUCCESS;
}

RetCode DynamicsProcessingContext::setVolumeStereo(const Parameter::VolumeStereo& volumeStereo) {
    std::lock_guard lg(mMutex);
    dp_fx::DPChannel* leftChannel = mDpFreq->getChannel(0);
    dp_fx::DPChannel* rightChannel = mDpFreq->getChannel(1);
    if (leftChannel != nullptr) {
        leftChannel->setOutputGain(audio_utils_power_from_amplitude(volumeStereo.left));
    }
    if (rightChannel != nullptr) {
        rightChannel->setOutputGain(audio_utils_power_from_amplitude(volumeStereo.right));
    }
    return RetCode::SUCCESS;
}

Parameter::VolumeStereo DynamicsProcessingContext::getVolumeStereo() {
    return {1.0f, 1.0f};
}

void DynamicsProcessingContext::dpSetFreqDomainVariant_l(
        const DynamicsProcessing::EngineArchitecture& engine) {
    mDpFreq.reset(new dp_fx::DPFrequency());
@@ -273,7 +291,7 @@ std::vector<DynamicsProcessing::InputGain> DynamicsProcessingContext::getInputGa
    return ret;
}

IEffect::Status DynamicsProcessingContext::lvmProcess(float* in, float* out, int samples) {
IEffect::Status DynamicsProcessingContext::dpeProcess(float* in, float* out, int samples) {
    LOG(DEBUG) << __func__ << " in " << in << " out " << out << " sample " << samples;

    IEffect::Status status = {EX_NULL_POINTER, 0, 0};
@@ -460,6 +478,11 @@ RetCode DynamicsProcessingContext::setDpChannels_l(
    RetCode ret = RetCode::SUCCESS;
    std::unordered_set<int> channelSet;

    if (!stageInUse) {
        LOG(WARNING) << __func__ << " not in use " << ::android::internal::ToString(channels);
        return RetCode::SUCCESS;
    }

    RETURN_VALUE_IF(!stageInUse, RetCode::ERROR_ILLEGAL_PARAMETER, "stageNotInUse");
    for (auto& it : channels) {
        if (0 != channelSet.count(it.channel)) {
+3 −1
Original line number Diff line number Diff line
@@ -45,6 +45,8 @@ class DynamicsProcessingContext final : public EffectContext {

    // override EffectContext::setCommon to update mChannelCount
    RetCode setCommon(const Parameter::Common& common) override;
    RetCode setVolumeStereo(const Parameter::VolumeStereo& volumeStereo) override;
    Parameter::VolumeStereo getVolumeStereo() override;

    RetCode setEngineArchitecture(const DynamicsProcessing::EngineArchitecture& engineArchitecture);
    RetCode setPreEq(const std::vector<DynamicsProcessing::ChannelConfig>& eqChannels);
@@ -66,7 +68,7 @@ class DynamicsProcessingContext final : public EffectContext {
    std::vector<DynamicsProcessing::LimiterConfig> getLimiter();
    std::vector<DynamicsProcessing::InputGain> getInputGain();

    IEffect::Status lvmProcess(float* in, float* out, int samples);
    IEffect::Status dpeProcess(float* in, float* out, int samples);

  private:
    static constexpr float kPreferredProcessingDurationMs = 10.0f;
+1 −1
Original line number Diff line number Diff line
@@ -98,7 +98,7 @@ class BundleContext final : public EffectContext {
            const Virtualizer::SpeakerAnglesPayload payload);

    RetCode setVolumeStereo(const Parameter::VolumeStereo& volumeStereo) override;
    Parameter::VolumeStereo getVolumeStereo() override { return mVolumeStereo; }
    Parameter::VolumeStereo getVolumeStereo() override { return {1.0f, 1.0f}; }

    IEffect::Status lvmProcess(float* in, float* out, int samples);