avcodec/hevc_ps: Override max_dec_pic_buffering when its inconsistent with num_reorde...
authorMichael Niedermayer <michaelni@gmx.at>
Wed, 15 Jan 2014 03:30:41 +0000 (04:30 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Wed, 15 Jan 2014 03:45:42 +0000 (04:45 +0100)
Fixes Ticket3304

Alternatively max_dec_pic_buffering could be removed completely as its not used.

Based on a patch by Jose Santiago <santiago@haivision.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/hevc_ps.c

index 1684d77..24968cc 100644 (file)
@@ -763,8 +763,11 @@ int ff_hevc_decode_nal_sps(HEVCContext *s)
         if (sps->temporal_layer[i].num_reorder_pics > sps->temporal_layer[i].max_dec_pic_buffering - 1) {
             av_log(s->avctx, AV_LOG_ERROR, "sps_max_num_reorder_pics out of range: %d\n",
                    sps->temporal_layer[i].num_reorder_pics);
-            ret = AVERROR_INVALIDDATA;
-            goto err;
+            if (sps->temporal_layer[i].num_reorder_pics > MAX_DPB_SIZE - 1) {
+                ret = AVERROR_INVALIDDATA;
+                goto err;
+            }
+            sps->temporal_layer[i].max_dec_pic_buffering = sps->temporal_layer[i].num_reorder_pics + 1;
         }
     }