[FFmpeg-cvslog] h264: don't sync pic_id between threads.

Ronald S. Bultje git at videolan.org
Mon Apr 3 16:27:38 EEST 2017


ffmpeg | branch: master | Ronald S. Bultje <rsbultje at gmail.com> | Mon Apr  3 09:25:15 2017 -0400| [e72690b18da064f6c0f04f09ccde72b6636e3159] | committer: Ronald S. Bultje

h264: don't sync pic_id between threads.

This is how the ref list manager links bitstream IDs to H264Picture/Ref
objects, and is local to the producer thread. There is no need for the
consumer thread to know the bitstream IDs of its references in their
respective producer threads.

In practice, this fixes tsan warnings when running fate-h264:

WARNING: ThreadSanitizer: data race (pid=19295)
  Read of size 4 at 0x7dbc0000e614 by main thread (mutexes: write M1914):
    #0 ff_h264_ref_picture src/libavcodec/h264_picture.c:112 (ffmpeg+0x0000013b3709)
[..]
  Previous write of size 4 at 0x7dbc0000e614 by thread T2 (mutexes: write M1917):
    #0 build_def_list src/libavcodec/h264_refs.c:91 (ffmpeg+0x0000013b46cf)

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=e72690b18da064f6c0f04f09ccde72b6636e3159
---

 libavcodec/h264_picture.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/libavcodec/h264_picture.c b/libavcodec/h264_picture.c
index db96737..2dbe5ee 100644
--- a/libavcodec/h264_picture.c
+++ b/libavcodec/h264_picture.c
@@ -109,7 +109,6 @@ int ff_h264_ref_picture(H264Context *h, H264Picture *dst, H264Picture *src)
     dst->poc           = src->poc;
     dst->frame_num     = src->frame_num;
     dst->mmco_reset    = src->mmco_reset;
-    dst->pic_id        = src->pic_id;
     dst->long_ref      = src->long_ref;
     dst->mbaff         = src->mbaff;
     dst->field_picture = src->field_picture;



More information about the ffmpeg-cvslog mailing list