From d9343c348412d9b790c6da6b64c07ef85aefd145 Mon Sep 17 00:00:00 2001 From: "Ronald S. Bultje" Date: Sat, 25 Jan 2014 20:11:28 -0500 Subject: [PATCH] vp9: disable use_last_frame_mvs on resolution change (scalable). Prevents some invalid memory accesses after resolution change in vp90-2-05-resize.webm, and libvpx does this too. Reviewed-by: ubitux Signed-off-by: Michael Niedermayer --- libavcodec/vp9.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libavcodec/vp9.c b/libavcodec/vp9.c index 29653949d5..e85a099b64 100644 --- a/libavcodec/vp9.c +++ b/libavcodec/vp9.c @@ -467,7 +467,6 @@ static int decode_frame_header(AVCodecContext *ctx, last_invisible = s->invisible; s->invisible = !get_bits1(&s->gb); s->errorres = get_bits1(&s->gb); - // FIXME disable this upon resolution change s->use_last_frame_mvs = !s->errorres && !last_invisible; if (s->keyframe) { if (get_bits_long(&s->gb, 24) != VP9_SYNCCODE) { // synccode @@ -526,6 +525,8 @@ static int decode_frame_header(AVCodecContext *ctx, w = get_bits(&s->gb, 16) + 1; h = get_bits(&s->gb, 16) + 1; } + s->use_last_frame_mvs &= s->frames[LAST_FRAME].tf.f->width == w && + s->frames[LAST_FRAME].tf.f->height == h; if (get_bits1(&s->gb)) // display size skip_bits(&s->gb, 32); s->highprecisionmvs = get_bits1(&s->gb);