ffmpeg | branch: master | Ronald S. Bultje <rsbul...@gmail.com> | Tue Mar 28 20:11:43 2017 -0400| [081c21ca55d72921125848c8c2c191a6ff8b5f88] | committer: Ronald S. Bultje
lagarith: assign correct per-thread value to LagarithContext::avctx. This fixes race conditions reported by tsan in fate-lagarith. The races were because each thread's LagarithContext::avctx was set to the first thread's AVCodecContext. > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=081c21ca55d72921125848c8c2c191a6ff8b5f88 --- libavcodec/lagarith.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/libavcodec/lagarith.c b/libavcodec/lagarith.c index f03305f..469eec4 100644 --- a/libavcodec/lagarith.c +++ b/libavcodec/lagarith.c @@ -730,6 +730,16 @@ static av_cold int lag_decode_init(AVCodecContext *avctx) return 0; } +#if HAVE_THREADS +static av_cold int lag_decode_init_thread_copy(AVCodecContext *avctx) +{ + LagarithContext *l = avctx->priv_data; + l->avctx = avctx; + + return 0; +} +#endif + static av_cold int lag_decode_end(AVCodecContext *avctx) { LagarithContext *l = avctx->priv_data; @@ -746,6 +756,7 @@ AVCodec ff_lagarith_decoder = { .id = AV_CODEC_ID_LAGARITH, .priv_data_size = sizeof(LagarithContext), .init = lag_decode_init, + .init_thread_copy = ONLY_IF_THREADS_ENABLED(lag_decode_init_thread_copy), .close = lag_decode_end, .decode = lag_decode_frame, .capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_FRAME_THREADS, _______________________________________________ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog