summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libs/gst/base/gstflowcombiner.c24
-rw-r--r--libs/gst/base/gstflowcombiner.h2
2 files changed, 26 insertions, 0 deletions
diff --git a/libs/gst/base/gstflowcombiner.c b/libs/gst/base/gstflowcombiner.c
index 5d11c6d78..435c51400 100644
--- a/libs/gst/base/gstflowcombiner.c
+++ b/libs/gst/base/gstflowcombiner.c
@@ -158,6 +158,30 @@ gst_flow_combiner_clear (GstFlowCombiner * combiner)
combiner->last_ret = GST_FLOW_OK;
}
+/**
+ * gst_flow_combiner_reset:
+ * @combiner: the #GstFlowCombiner to clear
+ *
+ * Removes all pads from a #GstFlowCombiner and resets it to its initial state.
+ *
+ * Since: 1.6
+ */
+void
+gst_flow_combiner_reset (GstFlowCombiner * combiner)
+{
+ GList *iter;
+
+ g_return_if_fail (combiner != NULL);
+
+ GST_DEBUG ("Reset flow returns");
+
+ for (iter = combiner->pads.head; iter; iter = iter->next) {
+ GST_PAD_LAST_FLOW_RETURN (iter->data) = GST_FLOW_OK;
+ }
+
+ combiner->last_ret = GST_FLOW_OK;
+}
+
static GstFlowReturn
gst_flow_combiner_get_flow (GstFlowCombiner * combiner)
{
diff --git a/libs/gst/base/gstflowcombiner.h b/libs/gst/base/gstflowcombiner.h
index 692618eac..f31d65de4 100644
--- a/libs/gst/base/gstflowcombiner.h
+++ b/libs/gst/base/gstflowcombiner.h
@@ -53,6 +53,8 @@ void gst_flow_combiner_remove_pad (GstFlowCombiner * combiner, GstP
void gst_flow_combiner_clear (GstFlowCombiner * combiner);
+void gst_flow_combiner_reset (GstFlowCombiner * combiner);
+
GType gst_flow_combiner_get_type (void);
G_END_DECLS