ducatih264dec: use num-reorder-frames to size the frame backlog array
[glsdk/gst-plugin-ducati.git] / src / gstducatih264dec.c
index d7149fbef30582d80b1285fe0cc1dce81a3d975a..9b553505bcf599c3eee66ef2359767fdb43807e1 100644 (file)
@@ -306,18 +306,21 @@ gst_ducati_h264dec_set_sink_caps (GstDucatiVidDec * self, GstCaps * caps)
 
   structure = gst_caps_get_structure (caps, 0);
   if (structure) {
-    gint num_ref_frames = -1;
+    gint num_ref_frames = -1, num_reorder_frames = -1;
     if (gst_structure_get_int (structure, "num-ref-frames", &num_ref_frames)
         && num_ref_frames >= 0) {
       ((IH264VDEC_Params *) self->params)->maxNumRefFrames = num_ref_frames;
-
-      if (num_ref_frames > MAX_BACKLOG_FRAMES) {
+    }
+    if (gst_structure_get_int (structure, "num-reorder-frames",
+            &num_reorder_frames)
+        && num_reorder_frames >= 0) {
+      if (num_reorder_frames > MAX_BACKLOG_FRAMES) {
         h264dec->backlog_maxframes = MAX_BACKLOG_FRAMES;
         GST_WARNING_OBJECT (self,
             "Stream needs %d frames for reordering, we can only accomodate %d",
-            num_ref_frames, MAX_BACKLOG_FRAMES);
+            num_reorder_frames, MAX_BACKLOG_FRAMES);
       } else {
-        h264dec->backlog_maxframes = num_ref_frames;
+        h264dec->backlog_maxframes = num_reorder_frames;
         GST_INFO_OBJECT (self, "Num frames for reordering: %d",
             h264dec->backlog_maxframes);
       }
@@ -329,7 +332,7 @@ gst_ducati_h264dec_set_sink_caps (GstDucatiVidDec * self, GstCaps * caps)
     h264dec->backlog_maxframes =
         gst_ducati_h264dec_get_max_dpb_size (self, caps);
     GST_WARNING_OBJECT (self,
-        "num-ref-frames not found on caps, defaulting to %d",
+        "num-reorder-frames not found on caps, defaulting to %d",
         h264dec->backlog_maxframes);
   }