dnxhd: initialize DNXHDContext::avctx to each thread's respective one.
authorRonald S. Bultje <rsbultje@gmail.com>
Tue, 28 Mar 2017 23:37:42 +0000 (19:37 -0400)
committerRonald S. Bultje <rsbultje@gmail.com>
Fri, 31 Mar 2017 12:26:23 +0000 (08:26 -0400)
Otherwise all thread's private contexts have the avctx pointer set to
the AVCodecContext of the first thread, which means all writes to
ctx->avctx->* (in e.g. read_header) are effectively race conditions.

Fixes fate-dnxhd under tsan.

libavcodec/dnxhddec.c

index f67763e..383e64c 100644 (file)
@@ -145,6 +145,7 @@ static av_cold int dnxhd_decode_init_thread_copy(AVCodecContext *avctx)
 {
     DNXHDContext *ctx = avctx->priv_data;
 
+    ctx->avctx = avctx;
     // make sure VLC tables will be loaded when cid is parsed
     ctx->cid = -1;