[FFmpeg-devel] [PATCH] fix GetBitContext index when SPS bitstream_restriction_flag=1 but can't be parsed, because index is out of bit-stream size. Need return index value continue H.264 parsing

Ivan Shmakov ishmakov at zingaya.com
Tue May 16 15:13:36 EEST 2017


---
 libavcodec/h264_ps.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/libavcodec/h264_ps.c b/libavcodec/h264_ps.c
index 7858361..09e2290 100644
--- a/libavcodec/h264_ps.c
+++ b/libavcodec/h264_ps.c
@@ -136,6 +136,7 @@ static inline int decode_vui_parameters(GetBitContext
*gb, AVCodecContext *avctx
 {
     int aspect_ratio_info_present_flag;
     unsigned int aspect_ratio_idc;
+    int idx;
 
     aspect_ratio_info_present_flag = get_bits1(gb);
 
@@ -221,8 +222,10 @@ static inline int decode_vui_parameters(GetBitContext
*gb, AVCodecContext *avctx
     sps->pic_struct_present_flag = get_bits1(gb);
     if (!get_bits_left(gb))
         return 0;
+
     sps->bitstream_restriction_flag = get_bits1(gb);
     if (sps->bitstream_restriction_flag) {
+        idx = gb->index;
         get_bits1(gb);     /* motion_vectors_over_pic_boundaries_flag */
         get_ue_golomb(gb); /* max_bytes_per_pic_denom */
         get_ue_golomb(gb); /* max_bits_per_mb_denom */
@@ -234,6 +237,7 @@ static inline int decode_vui_parameters(GetBitContext
*gb, AVCodecContext *avctx
         if (get_bits_left(gb) < 0) {
             sps->num_reorder_frames         = 0;
             sps->bitstream_restriction_flag = 0;
+            gb->index = idx;
         }
 
         if (sps->num_reorder_frames > 16U
-- 
2.10.2.windows.1




More information about the ffmpeg-devel mailing list