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

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

gst/rtpmanager/gstrtpmux.c

index faf4a62..7d2bbfb 100644 (file)
@@ -439,7 +439,11 @@ gst_rtp_mux_chain_list (GstPad * pad, GstObject * parent,
     GstCaps *current_caps = gst_pad_get_current_caps (pad);
 
     if (!gst_rtp_mux_setcaps (pad, rtp_mux, current_caps)) {
-      ret = GST_FLOW_NOT_NEGOTIATED;
+      gst_pad_mark_reconfigure (rtp_mux->srcpad);
+      if (GST_PAD_IS_FLUSHING (rtp_mux->srcpad))
+        ret = GST_FLOW_FLUSHING;
+      else
+        ret = GST_FLOW_NOT_NEGOTIATED;
       gst_buffer_list_unref (bufferlist);
       goto out;
     }
@@ -519,7 +523,11 @@ gst_rtp_mux_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
     GstCaps *current_caps = gst_pad_get_current_caps (pad);
 
     if (!gst_rtp_mux_setcaps (pad, rtp_mux, current_caps)) {
-      ret = GST_FLOW_NOT_NEGOTIATED;
+      gst_pad_mark_reconfigure (rtp_mux->srcpad);
+      if (GST_PAD_IS_FLUSHING (rtp_mux->srcpad))
+        ret = GST_FLOW_FLUSHING;
+      else
+        ret = GST_FLOW_NOT_NEGOTIATED;
       gst_buffer_unref (buffer);
       goto out;
     }