summaryrefslogtreecommitdiff
path: root/libavcodec/ra144enc.c
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 /libavcodec/ra144enc.c
parent131609dc2a75e6783396853023d6f49333e3f495 (diff)
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.
Diffstat (limited to 'libavcodec/ra144enc.c')
-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++) {