From 6231c785ef9a33bcd8877ab8f475babe7d5fa538 Mon Sep 17 00:00:00 2001 From: Wind Yuan Date: Wed, 30 Jan 2013 13:23:03 +0800 Subject: [PATCH] h264: fix reference list count less than num_ref Sometimes RefPicListX_count may be less than num_ref_idx_lX. There's not enough reference pictures in dpb. --- gst-libs/gst/vaapi/gstvaapidecoder_h264.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/gst-libs/gst/vaapi/gstvaapidecoder_h264.c b/gst-libs/gst/vaapi/gstvaapidecoder_h264.c index 1d8dea3..087a029 100755 --- a/gst-libs/gst/vaapi/gstvaapidecoder_h264.c +++ b/gst-libs/gst/vaapi/gstvaapidecoder_h264.c @@ -1916,6 +1916,8 @@ exec_picture_refs_modification_1( num_refs = slice_hdr->num_ref_idx_l1_active_minus1 + 1; } ref_list_count = *ref_list_count_ptr; + if (num_refs > ref_list_count) + num_refs = ref_list_count; if (!GST_VAAPI_PICTURE_IS_FRAME(picture)) { MaxPicNum = 1 << (sps->log2_max_frame_num_minus4 + 5); // 2 * MaxFrameNum @@ -2112,7 +2114,7 @@ init_picture_refs( num_refs = 1 + slice_hdr->num_ref_idx_l1_active_minus1; for (i = priv->RefPicList1_count; i < num_refs; i++) priv->RefPicList1[i] = NULL; - priv->RefPicList1_count = num_refs; + //priv->RefPicList1_count = num_refs; // fall-through case GST_VAAPI_PICTURE_TYPE_P: @@ -2120,7 +2122,7 @@ init_picture_refs( num_refs = 1 + slice_hdr->num_ref_idx_l0_active_minus1; for (i = priv->RefPicList0_count; i < num_refs; i++) priv->RefPicList0[i] = NULL; - priv->RefPicList0_count = num_refs; + //priv->RefPicList0_count = num_refs; break; default: break; -- 2.7.4