ra144enc: zero the reflection coeffs if the filter is unstable
authorJustin Ruggles <justin.ruggles@gmail.com>
Wed, 21 Dec 2011 21:09:11 +0000 (16:09 -0500)
committerJustin Ruggles <justin.ruggles@gmail.com>
Thu, 22 Dec 2011 13:31:07 +0000 (08:31 -0500)
fixes use of uninitialized values if the filter is still unstable after using
the previous frame lpc coefficients.

libavcodec/ra144enc.c

index 1d260b7..ee38bd5 100644 (file)
@@ -477,7 +477,10 @@ static int ra144_encode_frame(AVCodecContext *avctx, uint8_t *frame,
          * The filter is unstable: use the coefficients of the previous frame.
          */
         ff_int_to_int16(block_coefs[NBLOCKS - 1], ractx->lpc_coef[1]);
-        ff_eval_refl(lpc_refl, block_coefs[NBLOCKS - 1], avctx);
+        if (ff_eval_refl(lpc_refl, block_coefs[NBLOCKS - 1], avctx)) {
+            /* the filter is still unstable. set reflection coeffs to zero. */
+            memset(lpc_refl, 0, sizeof(lpc_refl));
+        }
     }
     init_put_bits(&pb, frame, buf_size);
     for (i = 0; i < LPC_ORDER; i++) {