From 8b7bb2965ad6c3869049dc5c00e604f315e6ffcf Mon Sep 17 00:00:00 2001
From: Wind Yuan <feng.yuan@intel.com>
Date: Wed, 30 Jan 2013 13:23:03 +0800
Subject: [PATCH 1/3] 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 aa18bf4..59f0803 100755
--- a/gst-libs/gst/vaapi/gstvaapidecoder_h264.c
+++ b/gst-libs/gst/vaapi/gstvaapidecoder_h264.c
@@ -1903,6 +1903,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
@@ -2099,7 +2101,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:
@@ -2107,7 +2109,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;
-- 
1.7.9.5

