Snap for 15063687 from 7a9a04f2bd739e740da06025c0e4f2872091ffb8 to 26Q2-release Change-Id: If1de3451905f43d496902b3fd83b50b6c684fe27
diff --git a/xhe-aac/aacfastenc/src/realpred_stereo.c b/xhe-aac/aacfastenc/src/realpred_stereo.c index f70b3fd..ee46f8b 100644 --- a/xhe-aac/aacfastenc/src/realpred_stereo.c +++ b/xhe-aac/aacfastenc/src/realpred_stereo.c
@@ -109,6 +109,7 @@ #define SFB_PER_PRED_BAND (2) #define PRED_COEFF_CHANGED (0xFF) +#define DELTA_LIMIT 60 static void iisaacfenc_QuantizeRealPredCoeffs(float predCoefRe, int *predCoefReQ) { const int signRe = predCoefRe >= 0.0f ? 1 : -1; @@ -176,6 +177,17 @@ } } +static int limitCoef(int coef) { + const int limit = DELTA_LIMIT / 2; + if (coef > limit) { + coef = limit; + } + if (coef < -limit) { + coef = -limit; + } + return coef; +} + int iisaacfenc_rdOptimizeRealPred(const int sfbCnt, const int sfbPerGroup, const int maxSfbPerGroup, @@ -278,7 +290,8 @@ for (sfb = sfboffs; sfb < sfboffs + maxSfbPerGroup; sfb += SFB_PER_PRED_BAND) { if (msMask[sfb]) { tmpCoeffRe = predCoeffReQ[sfb]; - predCoeffReQ[sfb] = prevBandCoeffReQ + deltaReFreq[predBand]; + predCoeffReQ[sfb] = limitCoef(prevBandCoeffReQ + deltaReFreq[predBand]); + predBand++; prevBandCoeffReQ = predCoeffReQ[sfb]; @@ -302,7 +315,7 @@ for (sfb = sfboffs; sfb < sfboffs + maxSfbPerGroup; sfb += SFB_PER_PRED_BAND) { if (msMask[sfb]) { tmpCoeffRe = predCoeffReQ[sfb]; - predCoeffReQ[sfb] = predCoeffPrevReQ[sfb] + deltaReTime[predBand]; + predCoeffReQ[sfb] = limitCoef(predCoeffPrevReQ[sfb] + deltaReTime[predBand]); predBand++; if (tmpCoeffRe != predCoeffReQ[sfb]) {