]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/aacenc_pred.c
Merge commit '9a3202a98b2e095b54dd784c3e01a09a676fc3fa'
[ffmpeg] / libavcodec / aacenc_pred.c
index fafe0029d4208d6c2e3d0c78ff579718068b01ea..c0e5e6e3b67327c101c3c483d95e605a329d92e2 100644 (file)
@@ -179,15 +179,15 @@ void ff_aac_adjust_common_prediction(AACEncContext *s, ChannelElement *cpe)
                 for (i = 0; i < sce0->ics.swb_sizes[g]; i++) {
                     float coef0 = sce0->pcoeffs[start+(w+w2)*128+i];
                     float coef1 = sce1->pcoeffs[start+(w+w2)*128+i];
-                    ener0 += coef0*coef0;
-                    ener1 += coef1*coef1;
+                    ener0  += coef0*coef0;
+                    ener1  += coef1*coef1;
                     ener01 += (coef0 + coef1)*(coef0 + coef1);
                 }
             }
             ph_err1 = ff_aac_is_encoding_err(s, cpe, start, w, g,
-                                             ener0, ener1, ener01, -1);
+                                             ener0, ener1, ener01, 1, -1);
             ph_err2 = ff_aac_is_encoding_err(s, cpe, start, w, g,
-                                             ener0, ener1, ener01, +1);
+                                             ener0, ener1, ener01, 1, +1);
             erf = ph_err1.error < ph_err2.error ? &ph_err1 : &ph_err2;
             if (erf->pass) {
                 sce0->ics.prediction_used[sfb] = 1;
@@ -262,7 +262,9 @@ void ff_aac_search_for_pred(AACEncContext *s, SingleChannelElement *sce)
         const int num_coeffs = sce->ics.swb_offset[sfb + 1] - start_coef;
         const FFPsyBand *band = &s->psy.ch[s->cur_channel].psy_bands[sfb];
 
-        if (start_coef + num_coeffs > MAX_PREDICTORS)
+        if (start_coef + num_coeffs > MAX_PREDICTORS ||
+            (s->cur_channel && sce->band_type[sfb] >= INTENSITY_BT2) ||
+            sce->band_type[sfb] == NOISE_BT)
             continue;
 
         /* Normal coefficients */