baseparse: slightly optimize sending of pending newsegment events
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Tue, 16 Nov 2010 17:04:00 +0000 (18:04 +0100)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Fri, 8 Apr 2011 17:07:12 +0000 (18:07 +0100)
gst/audioparsers/gstbaseparse.c

index e014d44b05837b5ed8b5d6fd97d6a94db1b66286..784bac0dd55728338def2975b8da9beaae0120eb 100644 (file)
@@ -1508,24 +1508,17 @@ gst_base_parse_push_buffer (GstBaseParse * parse, GstBuffer * buffer)
   }
 
   /* and should then also be linked downstream, so safe to send some events */
-  if (parse->priv->pad_mode == GST_ACTIVATE_PULL) {
-    if (G_UNLIKELY (parse->close_segment)) {
-      GST_DEBUG_OBJECT (parse, "loop sending close segment");
-      gst_pad_push_event (parse->srcpad, parse->close_segment);
-      parse->close_segment = NULL;
-    }
-
-    if (G_UNLIKELY (parse->pending_segment)) {
-      GST_DEBUG_OBJECT (parse, "loop push pending segment");
-      gst_pad_push_event (parse->srcpad, parse->pending_segment);
-      parse->pending_segment = NULL;
-    }
-  } else {
-    if (G_UNLIKELY (parse->pending_segment)) {
-      GST_DEBUG_OBJECT (parse, "chain pushing a pending segment");
-      gst_pad_push_event (parse->srcpad, parse->pending_segment);
-      parse->pending_segment = NULL;
-    }
+  if (G_UNLIKELY (parse->close_segment)) {
+    /* only set up by loop */
+    GST_DEBUG_OBJECT (parse, "loop sending close segment");
+    gst_pad_push_event (parse->srcpad, parse->close_segment);
+    parse->close_segment = NULL;
+  }
+  if (G_UNLIKELY (parse->pending_segment)) {
+    GST_DEBUG_OBJECT (parse, "%s push pending segment",
+        parse->priv->pad_mode == GST_ACTIVATE_PULL ? "loop" : "chain");
+    gst_pad_push_event (parse->srcpad, parse->pending_segment);
+    parse->pending_segment = NULL;
   }
 
   /* update bitrates and optionally post corresponding tags