pad: don't check twice for changed caps per push
authorStefan Kost <ensonic@users.sf.net>
Thu, 6 May 2010 14:02:49 +0000 (17:02 +0300)
committerStefan Kost <ensonic@users.sf.net>
Thu, 6 May 2010 14:04:53 +0000 (17:04 +0300)
gst_pad_chain_data_unchecked() does the same check already.

gst/gstpad.c

index 00dca74..3d1c520 100644 (file)
@@ -4307,8 +4307,6 @@ gst_pad_push_data (GstPad * pad, gboolean is_buffer, void *data)
 {
   GstPad *peer;
   GstFlowReturn ret;
-  GstCaps *caps;
-  gboolean caps_changed;
 
   GST_OBJECT_LOCK (pad);
 
@@ -4339,25 +4337,11 @@ gst_pad_push_data (GstPad * pad, gboolean is_buffer, void *data)
   if (G_UNLIKELY ((peer = GST_PAD_PEER (pad)) == NULL))
     goto not_linked;
 
-  /* Before pushing the buffer to the peer pad, ensure that caps
-   * are set on this pad */
-  caps = gst_pad_data_get_caps (is_buffer, data);
-  caps_changed = caps && caps != GST_PAD_CAPS (pad);
-
   /* take ref to peer pad before releasing the lock */
   gst_object_ref (peer);
 
   GST_OBJECT_UNLOCK (pad);
 
-  /* we got a new datatype from the pad, it had better handle it */
-  if (G_UNLIKELY (caps_changed)) {
-    GST_DEBUG_OBJECT (pad,
-        "caps changed from %" GST_PTR_FORMAT " to %p %" GST_PTR_FORMAT,
-        GST_PAD_CAPS (pad), caps, caps);
-    if (G_UNLIKELY (!gst_pad_set_caps (pad, caps)))
-      goto not_negotiated;
-  }
-
   ret = gst_pad_chain_data_unchecked (peer, is_buffer, data);
 
   gst_object_unref (peer);
@@ -4419,14 +4403,6 @@ not_linked:
     GST_OBJECT_UNLOCK (pad);
     return GST_FLOW_NOT_LINKED;
   }
-not_negotiated:
-  {
-    gst_pad_data_unref (is_buffer, data);
-    gst_object_unref (peer);
-    GST_CAT_DEBUG_OBJECT (GST_CAT_SCHEDULING, pad,
-        "element pushed data then refused to accept the caps");
-    return GST_FLOW_NOT_NEGOTIATED;
-  }
 }
 
 /**