• Andreas Rheinhardt's avatar
    avcodec/h264_redundant_pps_bsf: Don't remove PPS · 7ae1c0dd
    Andreas Rheinhardt authored
    There is no check for whether these supposedly redundant PPS
    are actually redundant. One could check via memcmp which would
    work in practice* (because all content buffers are initially
    zero-allocated), but this is not portable as compilers may
    trash padding inside structures as they wish.
    
    In case the PPS is not really redundant the output is garbage.
    This happens with several files from the FATE-suite. E.g.
    h264-conformance/CVCANLMA2_Sony_C.jsv doesn't decode correctly
    any more, whereas h264-conformance/CABA3_TOSHIBA_E.264 even
    fails in ff_cbs_write_packet(), because the inferred value
    of num_ref_idx_l0_active_minus1 mismatches with the value set
    in the slice (this happens when num_ref_idx_l0_default_active_minus1
    changes in the PPS; the value in the slice header is inferred from
    the original PPS's num_ref_idx_l0_default_active_minus1).
    
    *: Unless slice_group_id is used, i.e. unless slice_group_map_type
    is six.
    Signed-off-by: 's avatarAndreas Rheinhardt <andreas.rheinhardt@outlook.com>
    7ae1c0dd
h264_redundant_pps_bsf.c 4 KB