vp8: update frame size changes on thread context switches.
authorRonald S. Bultje <rsbultje@gmail.com>
Tue, 1 May 2012 16:59:04 +0000 (09:59 -0700)
committerRonald S. Bultje <rsbultje@gmail.com>
Wed, 2 May 2012 16:57:12 +0000 (09:57 -0700)
This properly synchronizes frame size changes between threads if
subsequent threads abort decoding before frame size is initialized, i.e.
it prevents the thread after that from ping-ponging back to the original
value.

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
libavcodec/vp8.c

index 1c973d5..d9fdd4d 100644 (file)
@@ -1833,6 +1833,8 @@ static int vp8_decode_update_thread_context(AVCodecContext *dst, const AVCodecCo
         (s_src->mb_width != s->mb_width || s_src->mb_height != s->mb_height)) {
         free_buffers(s);
         s->maps_are_invalid = 1;
+        s->mb_width  = s_src->mb_width;
+        s->mb_height = s_src->mb_height;
     }
 
     s->prob[0] = s_src->prob[!s_src->update_probabilities];