/** * gst_aggregator_set_src_caps: * @self: The #GstAggregator * @caps: The #GstCaps to set on the src pad. * * Sets the caps to be used on the src pad. */ void gst_aggregator_set_src_caps (GstAggregator * self, GstCaps * caps) { GST_AGGREGATOR_SETCAPS_LOCK (self); gst_caps_replace (&self->priv->srccaps, caps); _push_mandatory_events (self); GST_AGGREGATOR_SETCAPS_UNLOCK (self); }
static void _push_eos (GstAggregator * self) { GstEvent *event; _push_mandatory_events (self); self->priv->send_eos = FALSE; event = gst_event_new_eos (); gst_event_set_seqnum (event, self->priv->seqnum); gst_pad_push_event (self->srcpad, event); }
/** * gst_aggregator_finish_buffer: * @self: The #GstAggregator * @buffer: the #GstBuffer to push. * * This method will take care of sending mandatory events before pushing * the provided buffer. */ GstFlowReturn gst_aggregator_finish_buffer (GstAggregator * self, GstBuffer * buffer) { _push_mandatory_events (self); if (!g_atomic_int_get (&self->priv->flush_seeking) && gst_pad_is_active (self->srcpad)) { GST_TRACE_OBJECT (self, "pushing buffer %" GST_PTR_FORMAT, buffer); return gst_pad_push (self->srcpad, buffer); } else { GST_INFO_OBJECT (self, "Not pushing (active: %i, flushing: %i)", g_atomic_int_get (&self->priv->flush_seeking), gst_pad_is_active (self->srcpad)); gst_buffer_unref (buffer); return GST_FLOW_OK; } }
/** * gst_aggregator_set_src_caps: * @self: The #GstAggregator * @caps: The #GstCaps to set on the src pad. * * Sets the caps to be used on the src pad. */ void gst_aggregator_set_src_caps (GstAggregator * self, GstCaps * caps) { gst_caps_replace (&self->priv->srccaps, caps); _push_mandatory_events (self); }