pipeline: Allow up to 2 seconds queueing in the playsink video queue
authorThibault Saunier <thibault.saunier@osg.samsung.com>
Sat, 19 Aug 2017 14:42:57 +0000 (11:42 -0300)
committerThibault Saunier <thibault.saunier@osg.samsung.com>
Sun, 20 Aug 2017 02:21:57 +0000 (23:21 -0300)
In playsink the default video queue max size is 3 buffers, which is
sometimes not enough for our use case.

Allow up to 2 seconds of buffered data, giving us more time to do
the transition between clips, and thus avoiding dropping frames in
the sink when bringing up new clip takes too much time.

Differential Revision: https://phabricator.freedesktop.org/D1854

ges/ges-pipeline.c

index 65c3616..71c67d7 100644 (file)
@@ -573,6 +573,21 @@ ges_pipeline_change_state (GstElement * element, GstStateChange transition)
         gst_element_set_locked_state (tmp->data, FALSE);
     }
       break;
+    case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
+    {
+      GstElement *queue = gst_bin_get_by_name (GST_BIN (self->priv->playsink),
+          "vqueue");
+
+      if (queue) {
+        GST_INFO_OBJECT (self, "Setting playsink video queue max-size-time to"
+            " 2 seconds.");
+        g_object_set (G_OBJECT (queue), "max-size-buffers", 0,
+            "max-size-bytes", 0, "max-size-time", (gint64) 2 * GST_SECOND,
+            NULL);
+        gst_object_unref (queue);
+      }
+      break;
+    }
     default:
       break;
   }