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

Commit 82473369 authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Snap for 13143403 from 0e9b82f2 to 25Q2-release

Change-Id: I3314da56facaee1d3f1aab33106b30396c13c2c0
parents 7d3a329e 0e9b82f2
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -2,7 +2,6 @@
etalvala@google.com
arakesh@google.com
borgera@google.com
bkukreja@google.com
epeev@google.com
jchowdhary@google.com
rdhanjal@google.com
+7 −0
Original line number Diff line number Diff line
@@ -38,6 +38,13 @@ flag {
    bug: "364923030"
}

flag {
    name: "enable_gmap_mode"
    namespace: "media_audio"
    description: "enable track metadata tag generation for GMAP."
    bug: "366456949"
}

# shipped 24Q3
flag {
    name: "fdtostring_timeout_fix"
+10 −14
Original line number Diff line number Diff line
@@ -103,7 +103,9 @@ int LE_setConfig(LoudnessEnhancerContext *pContext, effect_config_t *pConfig)
    if (pConfig->inputCfg.samplingRate != pConfig->outputCfg.samplingRate) return -EINVAL;
    if (pConfig->inputCfg.channels != pConfig->outputCfg.channels) return -EINVAL;
    if (pConfig->inputCfg.format != pConfig->outputCfg.format) return -EINVAL;
    if (pConfig->inputCfg.channels != AUDIO_CHANNEL_OUT_STEREO) return -EINVAL;
    if (audio_channel_count_from_out_mask(pConfig->inputCfg.channels) > FCC_LIMIT) {
        return -EINVAL;
    }
    if (pConfig->outputCfg.accessMode != EFFECT_BUFFER_ACCESS_WRITE &&
            pConfig->outputCfg.accessMode != EFFECT_BUFFER_ACCESS_ACCUMULATE) return -EINVAL;
    if (pConfig->inputCfg.format != kProcessFormat) return -EINVAL;
@@ -278,27 +280,22 @@ int LE_process(
    }

    //ALOGV("LE about to process %d samples", inBuffer->frameCount);
    uint16_t inIdx;
    constexpr float scale = 1 << 15; // power of 2 is lossless conversion to int16_t range
    constexpr float inverseScale = 1.f / scale;
    const float inputAmp = pow(10, pContext->mTargetGainmB/2000.0f) * scale;
    float leftSample, rightSample;
    for (inIdx = 0 ; inIdx < inBuffer->frameCount ; inIdx++) {
        // makeup gain is applied on the input of the compressor
        leftSample  = inputAmp * inBuffer->f32[2*inIdx];
        rightSample = inputAmp * inBuffer->f32[2*inIdx +1];
        pContext->mCompressor->Compress(&leftSample, &rightSample);
        inBuffer->f32[2*inIdx]    = leftSample * inverseScale;
        inBuffer->f32[2*inIdx +1] = rightSample * inverseScale;
    }
    const size_t channelCount =
            audio_channel_count_from_out_mask(pContext->mConfig.outputCfg.channels);
    pContext->mCompressor->Compress(
            channelCount, inputAmp, inverseScale, inBuffer->f32, inBuffer->frameCount);

    if (inBuffer->raw != outBuffer->raw) {
        const size_t sampleCount = outBuffer->frameCount * channelCount;
        if (pContext->mConfig.outputCfg.accessMode == EFFECT_BUFFER_ACCESS_ACCUMULATE) {
            for (size_t i = 0; i < outBuffer->frameCount*2; i++) {
            for (size_t i = 0; i < sampleCount; i++) {
                outBuffer->f32[i] += inBuffer->f32[i];
            }
        } else {
            memcpy(outBuffer->raw, inBuffer->raw, outBuffer->frameCount * 2 * sizeof(float));
            memcpy(outBuffer->raw, inBuffer->raw, sampleCount * sizeof(float));
        }
    }
    if (pContext->mState != LOUDNESS_ENHANCER_STATE_ACTIVE) {
@@ -462,4 +459,3 @@ audio_effect_library_t AUDIO_EFFECT_LIBRARY_INFO_SYM = {
};

}; // extern "C"
+2 −1
Original line number Diff line number Diff line
@@ -139,7 +139,8 @@ std::shared_ptr<EffectContext> LoudnessEnhancerImpl::createContext(
        LOG(DEBUG) << __func__ << " context already exist";
        return mContext;
    }
    if (2 < getChannelCount(common.input.base.channelMask)) {
    const int channelCount = getChannelCount(common.input.base.channelMask);
    if (FCC_LIMIT < channelCount) {
        LOG(ERROR) << __func__
                   << " channelCount not supported: " << common.input.base.channelMask.toString();
        return nullptr;
+6 −25
Original line number Diff line number Diff line
@@ -69,34 +69,15 @@ IEffect::Status LoudnessEnhancerContext::process(float* in, float* out, int samp
    constexpr float scale = 1 << 15;  // power of 2 is lossless conversion to int16_t range
    constexpr float inverseScale = 1.f / scale;
    const float inputAmp = pow(10, mGain / 2000.0f) * scale;
    float leftSample, rightSample;

    if (mCompressor != nullptr) {
        for (int inIdx = 0; inIdx < samples; inIdx += 2) {
            // makeup gain is applied on the input of the compressor
            leftSample = inputAmp * in[inIdx];
            rightSample = inputAmp * in[inIdx + 1];
            mCompressor->Compress(&leftSample, &rightSample);
            in[inIdx] = leftSample * inverseScale;
            in[inIdx + 1] = rightSample * inverseScale;
        }
    } else {
        for (int inIdx = 0; inIdx < samples; inIdx += 2) {
            leftSample = inputAmp * in[inIdx];
            rightSample = inputAmp * in[inIdx + 1];
            in[inIdx] = leftSample * inverseScale;
            in[inIdx + 1] = rightSample * inverseScale;
        }
        const size_t channelCount = aidl::android::hardware::audio::common::getChannelCount(
                mCommon.input.base.channelMask);
        const size_t frameCount = samples / channelCount;
        mCompressor->Compress(channelCount, inputAmp, inverseScale, in, frameCount);
    }
    bool accumulate = false;
    if (in != out) {
        for (int i = 0; i < samples; i++) {
            if (accumulate) {
                out[i] += in[i];
            } else {
                out[i] = in[i];
            }
        }
        // nit: update Compress() to write to out.
        memcpy(out, in, samples * sizeof(float));
    }
    return {STATUS_OK, samples, samples};
}
Loading