videoaggregator: Mark pad as needing reconfiguration again if it failed
authorSebastian Dröge <sebastian@centricular.com>
Thu, 17 Nov 2016 18:20:15 +0000 (20:20 +0200)
committerSebastian Dröge <sebastian@centricular.com>
Fri, 18 Nov 2016 10:22:44 +0000 (12:22 +0200)
And return FLUSHING instead of NOT_NEGOTIATED on flushing pads.

https://bugzilla.gnome.org/show_bug.cgi?id=774623

gst-libs/gst/video/gstvideoaggregator.c

index cd42d7e..d1e4c90 100644 (file)
@@ -1452,7 +1452,8 @@ gst_video_aggregator_check_reconfigure (GstVideoAggregator * vagg,
 
     ret = gst_video_aggregator_update_src_caps (vagg);
     if (!ret) {
-      if (timeout && gst_pad_needs_reconfigure (GST_AGGREGATOR_SRC_PAD (vagg))) {
+      gst_pad_mark_reconfigure (GST_AGGREGATOR_SRC_PAD (vagg));
+      if (timeout) {
         guint64 frame_duration;
         gint fps_d, fps_n;
 
@@ -1482,7 +1483,10 @@ gst_video_aggregator_check_reconfigure (GstVideoAggregator * vagg,
         vagg->priv->nframes++;
         return GST_FLOW_NEEDS_DATA;
       } else {
-        return GST_FLOW_NOT_NEGOTIATED;
+        if (GST_PAD_IS_FLUSHING (GST_AGGREGATOR_SRC_PAD (vagg)))
+          return GST_FLOW_FLUSHING;
+        else
+          return GST_FLOW_NOT_NEGOTIATED;
       }
     }
   }