va: h265dec: Do not add non reference frames into ref list.
authorHe Junyan <junyan.he@intel.com>
Fri, 16 Jul 2021 05:21:11 +0000 (13:21 +0800)
committerHe Junyan <junyan.he@intel.com>
Fri, 16 Jul 2021 07:50:47 +0000 (15:50 +0800)
The VA's ReferenceFrames should only contain the reference frame, we
should not add the non reference frames into this list.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2414>

sys/va/gstvah265dec.c

index c126e5a..bff3a97 100644 (file)
@@ -754,9 +754,16 @@ gst_va_h265_dec_start_picture (GstH265Decoder * decoder,
   /* reference frames */
   {
     GArray *ref_list = gst_h265_dpb_get_pictures_all (dpb);
-    for (i = 0; i < 15 && i < ref_list->len; i++) {
-      GstH265Picture *pic = g_array_index (ref_list, GstH265Picture *, i);
-      _fill_vaapi_pic (decoder, &pic_param->base.ReferenceFrames[i], pic);
+    guint j;
+
+    i = 0;
+    for (j = 0; j < 15 && j < ref_list->len; j++) {
+      GstH265Picture *pic = g_array_index (ref_list, GstH265Picture *, j);
+
+      if (pic->ref) {
+        _fill_vaapi_pic (decoder, &pic_param->base.ReferenceFrames[i], pic);
+        i++;
+      }
     }
     g_array_unref (ref_list);