aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustin Ruggles <justin.ruggles@gmail.com>2011-12-21 16:09:11 -0500
committerJustin Ruggles <justin.ruggles@gmail.com>2011-12-22 08:31:07 -0500
commit9a3f10695a011861dcf5a649e3e72580b1a4eed4 (patch)
tree645af965af1b07ddb70a6d7a4715995b68eb578c
parent131609dc2a75e6783396853023d6f49333e3f495 (diff)
downloadffmpeg-9a3f10695a011861dcf5a649e3e72580b1a4eed4.tar.gz
ra144enc: zero the reflection coeffs if the filter is unstable
fixes use of uninitialized values if the filter is still unstable after using the previous frame lpc coefficients.
-rw-r--r--libavcodec/ra144enc.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/libavcodec/ra144enc.c b/libavcodec/ra144enc.c
index 1d260b7a22..ee38bd5c54 100644
--- a/libavcodec/ra144enc.c
+++ b/libavcodec/ra144enc.c
@@ -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++) {