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

Commit 41ce3372 authored by Jean-Michel Trivi's avatar Jean-Michel Trivi
Browse files

AAC decoder: fix boost/attenuation defaults, loudness norm off

For MPEG-D DRC the default value of the boost and attenuation
factors is 127. For MPEG-4 DRC the default value is 0. In the
current DRC presentation mode wrapper, setting boost or attenuation
factor to 0 doesn't work for MPEG-DRC, use value -1 instead.

Fix Target Reference Level set to -1 as a valid value for disabling
loudness normalization.

Bug: 148385721
Test: atest DecoderTestXheAac DecoderTestAacDrc
Change-Id: I33479072c508b5700c0b35f389802dc17b2b4536
parent edf942bd
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -47,10 +47,9 @@ CDrcPresModeWrapper::CDrcPresModeWrapper()
    mEncoderTarget = -1;

    /* Values from last time. */
    /* Initialized to the same values as the desired values */
    mLastTarget = -1;
    mLastAttFactor = 0;
    mLastBoostFactor = 0;
    mLastTarget = -2;
    mLastAttFactor = -1;
    mLastBoostFactor = -1;
    mLastHeavy = 0;
}

@@ -163,7 +162,7 @@ CDrcPresModeWrapper::update()

    if (mDataUpdate) {
        // sanity check
        if (mDesTarget < MAX_TARGET_LEVEL){
        if ((mDesTarget < MAX_TARGET_LEVEL) && (mDesTarget != -1)){
            mDesTarget = MAX_TARGET_LEVEL;  // limit target level to -10 dB or below
            newTarget = MAX_TARGET_LEVEL;
        }
+1 −1
Original line number Diff line number Diff line
@@ -2181,7 +2181,7 @@ status_t ACodec::configureCodec(
            }
            if (!msg->findInt32("aac-target-ref-level", &drc.targetRefLevel)) {
                // value is unknown
                drc.targetRefLevel = -1;
                drc.targetRefLevel = -2;
            }
            if (!msg->findInt32("aac-drc-effect-type", &drc.effectType)) {
                // value is unknown
+4 −5
Original line number Diff line number Diff line
@@ -47,10 +47,9 @@ CDrcPresModeWrapper::CDrcPresModeWrapper()
    mEncoderTarget = -1;

    /* Values from last time. */
    /* Initialized to the same values as the desired values */
    mLastTarget = -1;
    mLastAttFactor = 0;
    mLastBoostFactor = 0;
    mLastTarget = -2;
    mLastAttFactor = -1;
    mLastBoostFactor = -1;
    mLastHeavy = 0;
}

@@ -163,7 +162,7 @@ CDrcPresModeWrapper::update()

    if (mDataUpdate) {
        // sanity check
        if (mDesTarget < MAX_TARGET_LEVEL){
        if ((mDesTarget < MAX_TARGET_LEVEL) && (mDesTarget != -1)){
            mDesTarget = MAX_TARGET_LEVEL;  // limit target level to -10 dB or below
            newTarget = MAX_TARGET_LEVEL;
        }
+1 −1
Original line number Diff line number Diff line
@@ -477,7 +477,7 @@ OMX_ERRORTYPE SoftAAC2::internalSetParameter(
                        aacPresParams->nHeavyCompression);
                updateDrcWrapper = true;
            }
            if (aacPresParams->nTargetReferenceLevel >= 0) {
            if (aacPresParams->nTargetReferenceLevel >= -1) {
                ALOGV("set nTargetReferenceLevel=%d", aacPresParams->nTargetReferenceLevel);
                mDrcWrap.setParam(DRC_PRES_MODE_WRAP_DESIRED_TARGET,
                        aacPresParams->nTargetReferenceLevel);