flowcombiner: add a gst_flow_combiner_update_pad_flow() method
authorMark Nauwelaerts <mnauw@users.sourceforge.net>
Sat, 21 Feb 2015 19:13:04 +0000 (20:13 +0100)
committerMark Nauwelaerts <mnauw@users.sourceforge.net>
Sat, 7 Mar 2015 19:18:43 +0000 (20:18 +0100)
https://bugzilla.gnome.org/show_bug.cgi?id=744572

API: gst_flow_combiner_update_pad_flow()

libs/gst/base/gstflowcombiner.c
libs/gst/base/gstflowcombiner.h

index 435c514..9dd5123 100644 (file)
@@ -253,6 +253,34 @@ gst_flow_combiner_update_flow (GstFlowCombiner * combiner, GstFlowReturn fret)
 }
 
 /**
+ * gst_flow_combiner_update_pad_flow:
+ * @combiner: the #GstFlowCombiner
+ * @pad: the #GstPad whose #GstFlowReturn to update
+ * @fret: the latest #GstFlowReturn received for a pad in this #GstFlowCombiner
+ *
+ * Sets the provided pad's last flow return to provided value and computes
+ * the combined flow return for the pads in it.
+ *
+ * The #GstFlowReturn parameter should be the last flow return update for a pad
+ * in this #GstFlowCombiner. It will use this value to be able to shortcut some
+ * combinations and avoid looking over all pads again. e.g. The last combined
+ * return is the same as the latest obtained #GstFlowReturn.
+ *
+ * Returns: The combined #GstFlowReturn
+ * Since: 1.6
+ */
+GstFlowReturn
+gst_flow_combiner_update_pad_flow (GstFlowCombiner * combiner, GstPad * pad,
+    GstFlowReturn fret)
+{
+  g_return_val_if_fail (pad != NULL, GST_FLOW_ERROR);
+
+  GST_PAD_LAST_FLOW_RETURN (pad) = fret;
+
+  return gst_flow_combiner_update_flow (combiner, fret);
+}
+
+/**
  * gst_flow_combiner_add_pad:
  * @combiner: the #GstFlowCombiner
  * @pad: (transfer none): the #GstPad that is being added
index f31d65d..79e4bed 100644 (file)
@@ -47,6 +47,9 @@ void              gst_flow_combiner_free (GstFlowCombiner * combiner);
 
 GstFlowReturn     gst_flow_combiner_update_flow (GstFlowCombiner * combiner, GstFlowReturn fret);
 
+GstFlowReturn     gst_flow_combiner_update_pad_flow (GstFlowCombiner * combiner, GstPad * pad,
+                                                     GstFlowReturn fret);
+
 void              gst_flow_combiner_add_pad    (GstFlowCombiner * combiner, GstPad * pad);
 
 void              gst_flow_combiner_remove_pad (GstFlowCombiner * combiner, GstPad * pad);