• Ronald S. Bultje's avatar
    pthread_frame: allow per-field ThreadFrame owners. · 083300be
    Ronald S. Bultje authored
    This tries to handle cases where separate invocations of decode_frame()
    (each running in separate threads) write to respective fields in the
    same AVFrame->data[]. Having per-field owners makes interaction between
    readers (the referencing thread) and writers (the decoding thread)
    slightly more optimal if both accesses are field-based, since they will
    use the respective producer's thread objects (mutex/cond) instead of
    sharing the thread objects of the first field's producer.
    
    In practice, this fixes the following tsan-warning in fate-h264:
    
    WARNING: ThreadSanitizer: data race (pid=21615)
      Read of size 4 at 0x7d640000d9fc by thread T2 (mutexes: write M1006):
        #0 ff_thread_report_progress pthread_frame.c:569 (ffmpeg:x86_64+0x100f7cf54)
    [..]
      Previous write of size 4 at 0x7d640000d9fc by main thread (mutexes: write M1004):
        #0 update_context_from_user pthread_frame.c:335 (ffmpeg:x86_64+0x100f81abb)
    083300be
Name
Last commit
Last update
compat Loading commit data...
doc Loading commit data...
libavcodec Loading commit data...
libavdevice Loading commit data...
libavfilter Loading commit data...
libavformat Loading commit data...
libavresample Loading commit data...
libavutil Loading commit data...
libpostproc Loading commit data...
libswresample Loading commit data...
libswscale Loading commit data...
presets Loading commit data...
tests Loading commit data...
tools Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.travis.yml Loading commit data...
CONTRIBUTING.md Loading commit data...
COPYING.GPLv2 Loading commit data...
COPYING.GPLv3 Loading commit data...
COPYING.LGPLv2.1 Loading commit data...
COPYING.LGPLv3 Loading commit data...
CREDITS Loading commit data...
Changelog Loading commit data...
INSTALL.md Loading commit data...
LICENSE.md Loading commit data...
MAINTAINERS Loading commit data...
Makefile Loading commit data...
README.md Loading commit data...
RELEASE Loading commit data...
arch.mak Loading commit data...
cmdutils.c Loading commit data...
cmdutils.h Loading commit data...
cmdutils_common_opts.h Loading commit data...
cmdutils_opencl.c Loading commit data...
common.mak Loading commit data...
configure Loading commit data...
ffmpeg.c Loading commit data...
ffmpeg.h Loading commit data...
ffmpeg_cuvid.c Loading commit data...
ffmpeg_dxva2.c Loading commit data...
ffmpeg_filter.c Loading commit data...
ffmpeg_opt.c Loading commit data...
ffmpeg_qsv.c Loading commit data...
ffmpeg_vaapi.c Loading commit data...
ffmpeg_vdpau.c Loading commit data...
ffmpeg_videotoolbox.c Loading commit data...
ffplay.c Loading commit data...
ffprobe.c Loading commit data...
ffserver.c Loading commit data...
ffserver_config.c Loading commit data...
ffserver_config.h Loading commit data...
library.mak Loading commit data...
version.sh Loading commit data...