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)
committerMichael Niedermayer <michaelni@gmx.at>
Tue, 3 Jan 2012 20:51:53 +0000 (21:51 +0100)
fixes use of uninitialized values if the filter is still unstable after using
the previous frame lpc coefficients.
(cherry picked from commit 9a3f10695a011861dcf5a649e3e72580b1a4eed4)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/ra144enc.c

index 19fe06c..2436bac 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++) {