• Mark Harris's avatar
    avcodec: Use get_ue_golomb_long() when needed · c51c08e0
    Mark Harris authored
    get_ue_golomb() cannot decode values larger than 8190 (the maximum
    value that can be golomb encoded in 25 bits) and produces the error
    "Invalid UE golomb code" if a larger value is encountered.  Use
    get_ue_golomb_long() instead (which supports 63 bits, up to 4294967294)
    when valid h264/hevc values can exceed 8190.
    
    This updates decoding of the following values:   (maximum)
      first_mb_in_slice                                36863* for level 5.2
      abs_diff_pic_num_minus1                         131071
      difference_of_pic_nums_minus1                   131071
      idr_pic_id                                       65535
      recovery_frame_cnt                               65535
      frame_packing_arrangement_id                4294967294
      frame_packing_arrangement_repetition_period      16384
      display_orientation_repetition_period            16384
    
    An alternative would be to modify get_ue_golomb() to handle encoded
    values of up to 49 bits as was done for get_se_golomb() in a92816c4.
    In that case get_ue_golomb() could continue to be used for all of
    these except frame_packing_arrangement_id.
    Signed-off-by: 's avatarMichael Niedermayer <michael@niedermayer.cc>
    c51c08e0
golomb.h 14 KB