• Ronald S. Bultje's avatar
    h264: don't clobber mmco opcode tables for non-first slice headers. · bad446e2
    Ronald S. Bultje authored
    Clobbering these tables will temporarily clobber the template used
    as a basis for other threads to start decoding from. If the other
    decoding thread updates from the template right at that moment,
    subsequent threads will get invalid (or, usually, none at all) mmco
    tables. This leads to invalid reference lists and subsequent decode
    failures.
    
    Therefore, instead, decode the mmco tables only for the first slice in
    a field or frame. For other slices, decode the bits and ensure they
    are identical to the mmco tables in the first slice, but don't ever
    clobber the context state. This prevents other threads from using a
    clobbered/invalid template as starting point for decoding, and thus
    fixes decoding in these cases.
    
    This fixes occasional (~1%) failures of h264-conformance-mr1_bt_a with
    frame-multithreading enabled.
    Signed-off-by: 's avatarLuca Barbato <lu_zero@gentoo.org>
    bad446e2
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...
libswscale Loading commit data...
presets Loading commit data...
tests Loading commit data...
tools Loading commit data...
.gitignore 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 Loading commit data...
LICENSE Loading commit data...
Makefile Loading commit data...
README Loading commit data...
RELEASE Loading commit data...
arch.mak Loading commit data...
avconv.c Loading commit data...
avconv.h Loading commit data...
avconv_filter.c Loading commit data...
avconv_opt.c Loading commit data...
avplay.c Loading commit data...
avprobe.c Loading commit data...
avserver.c Loading commit data...
cmdutils.c Loading commit data...
cmdutils.h Loading commit data...
cmdutils_common_opts.h Loading commit data...
common.mak Loading commit data...
configure Loading commit data...
library.mak Loading commit data...
version.sh Loading commit data...