• 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
h264_refs.c 27.5 KB