diff --git a/libs/gst/base/gstflowcombiner.c b/libs/gst/base/gstflowcombiner.c index 5d11c6d78a..435c514001 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 692618eacb..f31d65de4b 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