From 931fbf5e12c464aee9114980d3dae3d87eaf514c Mon Sep 17 00:00:00 2001 From: "Reynaldo H. Verdejo Pinochet" Date: Tue, 17 Mar 2015 22:13:06 -0300 Subject: [PATCH] aggregator: implement gap handling https://bugzilla.gnome.org/show_bug.cgi?id=746249 --- gst-libs/gst/base/gstaggregator.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/gst-libs/gst/base/gstaggregator.c b/gst-libs/gst/base/gstaggregator.c index f97e24aa1d..880aa6d936 100644 --- a/gst-libs/gst/base/gstaggregator.c +++ b/gst-libs/gst/base/gstaggregator.c @@ -946,9 +946,23 @@ gst_aggregator_default_sink_event (GstAggregator * self, } case GST_EVENT_GAP: { - /* FIXME: need API to handle GAP events properly */ - GST_FIXME_OBJECT (self, "implement support for GAP events"); - /* don't forward GAP events downstream */ + GstClockTime pts; + GstClockTime duration; + GstBuffer *gapbuf; + + gst_event_parse_gap (event, &pts, &duration); + gapbuf = gst_buffer_new (); + + GST_BUFFER_PTS (gapbuf) = pts; + GST_BUFFER_DURATION (gapbuf) = duration; + GST_BUFFER_FLAG_SET (gapbuf, GST_BUFFER_FLAG_GAP); + GST_BUFFER_FLAG_SET (gapbuf, GST_BUFFER_FLAG_DROPPABLE); + + if (gst_pad_chain (pad, gapbuf) != GST_FLOW_OK) { + GST_WARNING_OBJECT (self, "Failed to chain gap buffer"); + res = FALSE; + } + goto eat; } case GST_EVENT_TAG: