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]) {