diff options
Diffstat (limited to 'fdk-aac/libAACenc/src')
| -rw-r--r-- | fdk-aac/libAACenc/src/aacenc_lib.cpp | 6 | ||||
| -rw-r--r-- | fdk-aac/libAACenc/src/adj_thr.cpp | 12 | ||||
| -rw-r--r-- | fdk-aac/libAACenc/src/intensity.cpp | 21 | 
3 files changed, 24 insertions, 15 deletions
| diff --git a/fdk-aac/libAACenc/src/aacenc_lib.cpp b/fdk-aac/libAACenc/src/aacenc_lib.cpp index aaa6c74..4eaa662 100644 --- a/fdk-aac/libAACenc/src/aacenc_lib.cpp +++ b/fdk-aac/libAACenc/src/aacenc_lib.cpp @@ -1,7 +1,7 @@  /* -----------------------------------------------------------------------------  Software License for The Fraunhofer FDK AAC Codec Library for Android -© Copyright  1995 - 2018 Fraunhofer-Gesellschaft zur Förderung der angewandten +© Copyright  1995 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten  Forschung e.V. All rights reserved.   1.    INTRODUCTION @@ -1822,6 +1822,10 @@ AACENC_ERROR aacEncEncode(const HANDLE_AACENCODER hAacEncoder,          hAacEncoder->inputBuffer +          (hAacEncoder->inputBufferOffset + hAacEncoder->nSamplesRead) /              hAacEncoder->aacConfig.nChannels; +    newSamples -= +        (newSamples % +         hAacEncoder->extParam +             .nChannels); /* process multiple samples of input channels */      /* Copy new input samples to internal buffer */      if (inBufDesc->bufElSizes[idx] == (INT)sizeof(INT_PCM)) { diff --git a/fdk-aac/libAACenc/src/adj_thr.cpp b/fdk-aac/libAACenc/src/adj_thr.cpp index 6e19680..226d003 100644 --- a/fdk-aac/libAACenc/src/adj_thr.cpp +++ b/fdk-aac/libAACenc/src/adj_thr.cpp @@ -1,7 +1,7 @@  /* -----------------------------------------------------------------------------  Software License for The Fraunhofer FDK AAC Codec Library for Android -© Copyright  1995 - 2018 Fraunhofer-Gesellschaft zur Förderung der angewandten +© Copyright  1995 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten  Forschung e.V. All rights reserved.   1.    INTRODUCTION @@ -591,13 +591,11 @@ static void FDKaacEnc_initAvoidHoleFlag(            if (sfbEn > avgEn) {              FIXP_DBL tmpMinSnrLdData;              if (psyOutChannel[ch]->lastWindowSequence == LONG_WINDOW) -              tmpMinSnrLdData = -                  fixMax(SnrLdFac + (FIXP_DBL)(avgEnLdData - sfbEnLdData), -                         (FIXP_DBL)SnrLdMin1); +              tmpMinSnrLdData = SnrLdFac + fixMax(avgEnLdData - sfbEnLdData, +                                                  SnrLdMin1 - SnrLdFac);              else -              tmpMinSnrLdData = -                  fixMax(SnrLdFac + (FIXP_DBL)(avgEnLdData - sfbEnLdData), -                         (FIXP_DBL)SnrLdMin3); +              tmpMinSnrLdData = SnrLdFac + fixMax(avgEnLdData - sfbEnLdData, +                                                  SnrLdMin3 - SnrLdFac);              qcOutChan->sfbMinSnrLdData[sfbGrp + sfb] = fixMin(                  qcOutChan->sfbMinSnrLdData[sfbGrp + sfb], tmpMinSnrLdData); diff --git a/fdk-aac/libAACenc/src/intensity.cpp b/fdk-aac/libAACenc/src/intensity.cpp index 8cb1b45..0944fa3 100644 --- a/fdk-aac/libAACenc/src/intensity.cpp +++ b/fdk-aac/libAACenc/src/intensity.cpp @@ -1,7 +1,7 @@  /* -----------------------------------------------------------------------------  Software License for The Fraunhofer FDK AAC Codec Library for Android -© Copyright  1995 - 2018 Fraunhofer-Gesellschaft zur Förderung der angewandten +© Copyright  1995 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten  Forschung e.V. All rights reserved.   1.    INTRODUCTION @@ -661,6 +661,7 @@ void FDKaacEnc_IntensityStereoProcessing(      for (sfboffs = 0; sfboffs < maxSfbPerGroup; sfboffs++) {        INT sL, sR;        FIXP_DBL inv_n; +      INT mdct_spec_sf = MDCT_SPEC_SF;        msMask[sfb + sfboffs] = 0;        if (isMask[sfb + sfboffs] == 0) { @@ -682,6 +683,12 @@ void FDKaacEnc_IntensityStereoProcessing(          }        } +      if (sfbOffset[sfb + sfboffs + 1] - sfbOffset[sfb + sfboffs] > +          1 << mdct_spec_sf) { +        mdct_spec_sf++; /* This is for rare cases where the number of bins in a +                           scale factor band is > 64 */ +      } +        inv_n = GetInvInt(            (sfbOffset[sfb + sfboffs + 1] - sfbOffset[sfb + sfboffs]) >>            1);  // scaled with 2 to compensate fMultDiv2() in subsequent loop @@ -707,11 +714,11 @@ void FDKaacEnc_IntensityStereoProcessing(               j++) {            d = ((mdctSpectrumLeft[j] << s0) >> 1) -                ((mdctSpectrumRight[j] << s0) >> 1); -          ed += fMultDiv2(d, d) >> (MDCT_SPEC_SF - 1); +          ed += fMultDiv2(d, d) >> (mdct_spec_sf - 1);          }          msMask[sfb + sfboffs] = 1;          tmp = fDivNorm(sfbEnergyLeft[sfb + sfboffs], ed, &s1); -        s2 = (s1) + (2 * s0) - 2 - MDCT_SPEC_SF; +        s2 = (s1) + (2 * s0) - 2 - mdct_spec_sf;          if (s2 & 1) {            tmp = tmp >> 1;            s2 = s2 + 1; @@ -747,13 +754,13 @@ void FDKaacEnc_IntensityStereoProcessing(               j++) {            s = ((mdctSpectrumLeft[j] << s0) >> 1) +                ((mdctSpectrumRight[j] << s0) >> 1); -          es = fAddSaturate(es, fMultDiv2(s, s) >> -                (MDCT_SPEC_SF - -                 1));  // scaled 2*(mdctScale - s0 + 1) + MDCT_SPEC_SF +          es += fMultDiv2(s, s) >> +                (mdct_spec_sf - +                 1);  // scaled 2*(mdctScale - s0 + 1) + mdct_spec_sf          }          msMask[sfb + sfboffs] = 0;          tmp = fDivNorm(sfbEnergyLeft[sfb + sfboffs], es, &s1); -        s2 = (s1) + (2 * s0) - 2 - MDCT_SPEC_SF; +        s2 = (s1) + (2 * s0) - 2 - mdct_spec_sf;          if (s2 & 1) {            tmp = tmp >> 1;            s2 = s2 + 1; | 
