Make max-reorder-frames an actual max, not a default max
authorVincent Penquerc'h <vincent.penquerch@collabora.co.uk>
Tue, 23 Oct 2012 13:04:16 +0000 (14:04 +0100)
committerVincent Penquerc'h <vincent.penquerch@collabora.co.uk>
Tue, 23 Oct 2012 13:04:16 +0000 (14:04 +0100)
This is more user friendly, and more useful.

src/gstducatih264dec.c
src/gstducatimpeg2dec.c
src/gstducatividdec.c
src/gstducatividdec.h

index f65a2ee393ea51f712fe4e2fffc883f1696809f5..4a4fde017a4a19f803af2df38df4f10d604679a3 100644 (file)
@@ -342,12 +342,14 @@ gst_ducati_h264dec_set_sink_caps (GstDucatiVidDec * self, GstCaps * caps)
   /* If not present, use the spec forumula for a bound */
   if (self->backlog_maxframes < 0) {
     self->backlog_maxframes = gst_ducati_h264dec_get_max_dpb_size (self, caps);
-    if (self->backlog_maxframes < 0)
-      self->backlog_maxframes = self->backlog_default_maxframes;
     GST_WARNING_OBJECT (self,
-        "num-reorder-frames not found on caps, defaulting to %d",
+        "num-reorder-frames not found on caps, calculation from stream parameters gives %d",
         self->backlog_maxframes);
   }
+  if (self->backlog_maxframes > self->backlog_max_maxframes)
+    self->backlog_maxframes = self->backlog_max_maxframes;
+  GST_WARNING_OBJECT (self,
+      "Using %d frames for reordering", self->backlog_maxframes);
 
 no_b_frames:
 
index f8085154a6408f71b2db2685797116ea6c39bc07..8bec5d6b44a1bac21bd3c26bf1ad7c21311c5bb8 100644 (file)
@@ -126,7 +126,7 @@ gst_ducati_mpeg2dec_set_sink_caps (GstDucatiVidDec * self, GstCaps * caps)
   profile = gst_structure_get_string (structure, "profile");
   if (!profile || strcmp (profile, "simple")) {
     /* TODO: can a better bound be found from stream headers ? */
-    self->backlog_maxframes = self->backlog_default_maxframes;
+    self->backlog_maxframes = self->backlog_max_maxframes;
   }
 
   return TRUE;
index 5203b9a00b08d14ea60ead101343efdb532af184..22e0d516971fff72e44ac8543a8ad5b5c49d16f4 100644 (file)
@@ -1413,7 +1413,7 @@ gst_ducati_viddec_get_property (GObject * obj,
       break;
     }
     case PROP_MAX_REORDER_FRAMES:
-      g_value_set_int (value, self->backlog_default_maxframes);
+      g_value_set_int (value, self->backlog_max_maxframes);
       break;
     default:{
       G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, prop_id, pspec);
@@ -1430,7 +1430,7 @@ gst_ducati_viddec_set_property (GObject * obj,
 
   switch (prop_id) {
     case PROP_MAX_REORDER_FRAMES:
-      self->backlog_default_maxframes = g_value_get_int (value);
+      self->backlog_max_maxframes = g_value_get_int (value);
       break;
     default:{
       G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, prop_id, pspec);
@@ -1570,7 +1570,7 @@ gst_ducati_viddec_init (GstDucatiVidDec * self, GstDucatiVidDecClass * klass)
 
   self->backlog_maxframes = 0;
   self->backlog_nframes = 0;
-  self->backlog_default_maxframes = MAX_BACKLOG_FRAMES;
+  self->backlog_max_maxframes = MAX_BACKLOG_FRAMES;
 
   self->passed_in_bufs = g_hash_table_new_full (g_direct_hash, g_direct_equal,
       NULL, (GDestroyNotify) gst_buffer_unref);
index 3d481f42ba16160a1547035efa7558f9e46b8715..19a9b335249d680e7d86d8170a9d100f8705c1b7 100644 (file)
@@ -142,7 +142,7 @@ struct _GstDucatiVidDec
   GstBuffer *backlog_frames[MAX_BACKLOG_FRAMES + 1];
   gint backlog_maxframes;
   gint backlog_nframes;
-  gint backlog_default_maxframes;
+  gint backlog_max_maxframes;
 };
 
 struct _GstDucatiVidDecClass