On 8/16/2018 7:52 AM, jos...@ob-encoder.com wrote:
> diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c
> index ede9a1a6ea..7bbe65878f 100644
> --- a/libavcodec/h264_slice.c
> +++ b/libavcodec/h264_slice.c
> @@ -429,6 +429,12 @@ int ff_h264_update_thread_context(AVCodecContext *dst,
>                         MAX_DELAYED_PIC_COUNT + 2, h, h1);
>  
>      h->frame_recovered       = h1->frame_recovered;
> +    if (h1->sei.a53_caption.buf_ref) {
> +        h->sei.a53_caption.buf_ref = 
> av_buffer_ref(h1->sei.a53_caption.buf_ref);
> +        av_buffer_unref(&h1->sei.a53_caption.buf_ref);
> +    }
> +    else
> +        h->sei.a53_caption.buf_ref = NULL;

Going back to this, and judging by similar buffers above, you probably
need to first unref h->sei.a53_caption.buf_ref unconditionally before
checking if you need to make it a reference to
h1->sei.a53_caption.buf_ref, the latter which should itself not be unreffed.

Could you corroborate this by running your samples through gcc-tsan or
clang-tsan?
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to