avcodec/vp8: Do not use num_coeff_partitions in thread/buffer setup
authorMichael Niedermayer <michael@niedermayer.cc>
Wed, 30 Sep 2015 11:10:48 +0000 (13:10 +0200)
committerMichael Niedermayer <michael@niedermayer.cc>
Wed, 30 Sep 2015 22:58:46 +0000 (00:58 +0200)
The variable is not a constant and can lead to race conditions

Fixes: repro.webm (not reproducable with FFmpeg alone)

Found-by: Dale Curtis <dalecurtis@google.com>
Tested-by: Dale Curtis <dalecurtis@google.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
libavcodec/vp8.c

index 730871a..cb0c7cd 100644 (file)
@@ -164,7 +164,7 @@ int update_dimensions(VP8Context *s, int width, int height, int is_vp7)
     s->mb_height = (s->avctx->coded_height + 15) / 16;
 
     s->mb_layout = is_vp7 || avctx->active_thread_type == FF_THREAD_SLICE &&
-                   FFMIN(s->num_coeff_partitions, avctx->thread_count) > 1;
+                   avctx->thread_count > 1;
     if (!s->mb_layout) { // Frame threading and one thread
         s->macroblocks_base       = av_mallocz((s->mb_width + s->mb_height * 2 + 1) *
                                                sizeof(*s->macroblocks));