static gboolean gst_play_sink_convert_bin_sink_event (GstPad * pad, GstObject * parent, GstEvent * event) { GstPlaySinkConvertBin *self = GST_PLAY_SINK_CONVERT_BIN (parent); gboolean ret; switch (GST_EVENT_TYPE (event)) { case GST_EVENT_CAPS: { GstCaps *caps; gst_event_parse_caps (event, &caps); ret = gst_play_sink_convert_bin_sink_setcaps (self, caps); break; } default: break; } ret = gst_pad_event_default (pad, parent, gst_event_ref (event)); gst_event_unref (event); return ret; }
static gboolean gst_play_sink_convert_bin_sink_event (GstPad * pad, GstObject * parent, GstEvent * event) { GstPlaySinkConvertBin *self = GST_PLAY_SINK_CONVERT_BIN (parent); gboolean ret; switch (GST_EVENT_TYPE (event)) { case GST_EVENT_CAPS: { GstCaps *caps; gst_event_parse_caps (event, &caps); ret = gst_play_sink_convert_bin_sink_setcaps (self, caps); break; } default: break; } ret = gst_pad_event_default (pad, parent, gst_event_ref (event)); if (GST_EVENT_TYPE (event) == GST_EVENT_SEGMENT) { GstSegment seg; GST_PLAY_SINK_CONVERT_BIN_LOCK (self); gst_event_copy_segment (event, &seg); GST_DEBUG_OBJECT (self, "Segment before %" GST_SEGMENT_FORMAT, &self->segment); self->segment = seg; GST_DEBUG_OBJECT (self, "Segment after %" GST_SEGMENT_FORMAT, &self->segment); GST_PLAY_SINK_CONVERT_BIN_UNLOCK (self); } else if (GST_EVENT_TYPE (event) == GST_EVENT_FLUSH_STOP) { GST_PLAY_SINK_CONVERT_BIN_LOCK (self); GST_DEBUG_OBJECT (self, "Resetting segment"); gst_segment_init (&self->segment, GST_FORMAT_UNDEFINED); GST_PLAY_SINK_CONVERT_BIN_UNLOCK (self); } gst_event_unref (event); return ret; }