[FFmpeg-devel] [PATCH] avcodec/mpegvideo: Fix all but one tsan warning in fate-vsynth1-mpeg4

Michael Niedermayer michael at niedermayer.cc
Mon Jul 10 04:19:51 EEST 2017


Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
---
 libavcodec/mpegvideo.c | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c
index e29558b3a2..574b3854e0 100644
--- a/libavcodec/mpegvideo.c
+++ b/libavcodec/mpegvideo.c
@@ -495,7 +495,20 @@ int ff_mpeg_update_thread_context(AVCodecContext *dst,
     // in that case dst may need a reinit
     if (!s->context_initialized) {
         int err;
-        memcpy(s, s1, sizeof(MpegEncContext));
+#define COPY(x) s->x = s1->x;
+#define COPYR(a, b) memcpy(&s->a, &s1->a, ((uint8_t*)&s->b) - ((uint8_t*)&s->a))
+        COPYR(h263_aic,                         qscale);
+        COPYR(lambda,                           mv_dir);
+        COPYR(no_rounding,                      dest);
+        COPYR(mb_index2xy,                      resync_mb_x);
+        COPYR(next_p_frame_damaged,             h263_aic_dir);
+        COPYR(h263_slice_structured,            mcsel);
+        COPYR(quant_precision,                  first_slice_line);
+        COPYR(flipflop_rounding,                gb);
+        COPYR(gop_picture_number,               picture_structure);
+        COPYR(picture_structure,                pblocks);
+        COPYR(decode_mb,                        er);
+        COPYR(error_rate,                       noise_reduction);
 
         s->avctx                 = dst;
         s->bitstream_buffer      = NULL;
-- 
2.13.0



More information about the ffmpeg-devel mailing list