diff --git a/girs/GstBase-1.0.gir b/girs/GstBase-1.0.gir
index 889df8ad68..b93a292b13 100644
--- a/girs/GstBase-1.0.gir
+++ b/girs/GstBase-1.0.gir
@@ -1551,6 +1551,28 @@ control aggregating parameters for a given set of input samples.
+
+ This method will push the provided event downstream. If needed, mandatory
+events such as stream-start, caps, and segment events will be sent before
+pushing the event.
+
+This API does not allow pushing stream-start, caps, segment and EOS events.
+Specific API like gst_aggregator_set_src_caps() should be used for these.
+
+
+
+
+
+
+ The #GstAggregator
+
+
+
+ the #GstEvent to push.
+
+
+
+
Subclasses should call this when they have prepared the
buffers they will aggregate for each of their sink pads, but
diff --git a/subprojects/gstreamer/libs/gst/base/gstaggregator.c b/subprojects/gstreamer/libs/gst/base/gstaggregator.c
index 88bd6d571e..606585c260 100644
--- a/subprojects/gstreamer/libs/gst/base/gstaggregator.c
+++ b/subprojects/gstreamer/libs/gst/base/gstaggregator.c
@@ -786,6 +786,36 @@ gst_aggregator_finish_buffer_list (GstAggregator * aggregator,
return klass->finish_buffer_list (aggregator, bufferlist);
}
+/**
+ * gst_aggregator_push_src_event:
+ * @aggregator: The #GstAggregator
+ * @event: (transfer full): the #GstEvent to push.
+ *
+ * This method will push the provided event downstream. If needed, mandatory
+ * events such as stream-start, caps, and segment events will be sent before
+ * pushing the event.
+ *
+ * This API does not allow pushing stream-start, caps, segment and EOS events.
+ * Specific API like gst_aggregator_set_src_caps() should be used for these.
+ *
+ * Since: 1.26
+ */
+gboolean
+gst_aggregator_push_src_event (GstAggregator * aggregator, GstEvent * event)
+{
+ g_return_val_if_fail (GST_EVENT_IS_DOWNSTREAM (event), FALSE);
+ g_return_val_if_fail (GST_EVENT_TYPE (event) != GST_EVENT_STREAM_START &&
+ GST_EVENT_TYPE (event) != GST_EVENT_CAPS &&
+ GST_EVENT_TYPE (event) != GST_EVENT_SEGMENT &&
+ GST_EVENT_TYPE (event) != GST_EVENT_EOS, FALSE);
+
+ if (GST_EVENT_IS_SERIALIZED (event)) {
+ gst_aggregator_push_mandatory_events (aggregator, FALSE);
+ }
+
+ return gst_pad_push_event (aggregator->srcpad, event);
+}
+
static void
gst_aggregator_push_eos (GstAggregator * self)
{
diff --git a/subprojects/gstreamer/libs/gst/base/gstaggregator.h b/subprojects/gstreamer/libs/gst/base/gstaggregator.h
index bbac9e4c04..7c394a711e 100644
--- a/subprojects/gstreamer/libs/gst/base/gstaggregator.h
+++ b/subprojects/gstreamer/libs/gst/base/gstaggregator.h
@@ -383,6 +383,10 @@ GST_BASE_API
GstFlowReturn gst_aggregator_finish_buffer_list (GstAggregator * aggregator,
GstBufferList * bufferlist);
+GST_BASE_API
+gboolean gst_aggregator_push_src_event (GstAggregator * aggregator,
+ GstEvent * event);
+
GST_BASE_API
void gst_aggregator_set_src_caps (GstAggregator * self,
GstCaps * caps);