avcodec: Use get_ue_golomb_long() when needed
authorMark Harris <mark.hsj@gmail.com>
Tue, 29 Dec 2015 07:04:08 +0000 (23:04 -0800)
committerMichael Niedermayer <michael@niedermayer.cc>
Tue, 29 Dec 2015 12:11:51 +0000 (13:11 +0100)
commitc51c08e0e70c186971385bdbb225f69edd4e3375
treecdced95a7ae4749374e575984e7e5c956c45f8a2
parentefa666e0da5e5fd2ded2e7dce4191bf04ac35952
avcodec: Use get_ue_golomb_long() when needed

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 a92816c.
In that case get_ue_golomb() could continue to be used for all of
these except frame_packing_arrangement_id.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
libavcodec/golomb.h
libavcodec/h264.c
libavcodec/h264_parser.c
libavcodec/h264_refs.c
libavcodec/h264_sei.c
libavcodec/h264_slice.c
libavcodec/hevc_sei.c