diff --git a/sys/v4l2/gstv4l2src.c b/sys/v4l2/gstv4l2src.c index f109b1ad2c..4e52e27096 100644 --- a/sys/v4l2/gstv4l2src.c +++ b/sys/v4l2/gstv4l2src.c @@ -132,6 +132,7 @@ static gboolean gst_v4l2src_decide_allocation (GstBaseSrc * src, GstQuery * query); static GstFlowReturn gst_v4l2src_fill (GstPushSrc * src, GstBuffer * out); static GstCaps *gst_v4l2src_fixate (GstBaseSrc * basesrc, GstCaps * caps); +static gboolean gst_v4l2src_event (GstBaseSrc * src, GstEvent * event); static gboolean gst_v4l2src_negotiate (GstBaseSrc * basesrc); static void gst_v4l2src_set_property (GObject * object, guint prop_id, @@ -219,6 +220,7 @@ gst_v4l2src_class_init (GstV4l2SrcClass * klass) basesrc_class->stop = GST_DEBUG_FUNCPTR (gst_v4l2src_stop); basesrc_class->query = GST_DEBUG_FUNCPTR (gst_v4l2src_query); basesrc_class->fixate = GST_DEBUG_FUNCPTR (gst_v4l2src_fixate); + basesrc_class->event = GST_DEBUG_FUNCPTR (gst_v4l2src_event); basesrc_class->negotiate = GST_DEBUG_FUNCPTR (gst_v4l2src_negotiate); basesrc_class->decide_allocation = GST_DEBUG_FUNCPTR (gst_v4l2src_decide_allocation); @@ -342,6 +344,22 @@ gst_v4l2src_fixate (GstBaseSrc * basesrc, GstCaps * caps) } +static gboolean +gst_v4l2src_event (GstBaseSrc * src, GstEvent * event) +{ + GST_DEBUG_OBJECT (src, "handle event %" GST_PTR_FORMAT, event); + + switch (GST_EVENT_TYPE (event)) { + case GST_EVENT_RECONFIGURE: + gst_pad_check_reconfigure (GST_BASE_SRC_PAD (src)); + break; + default: + break; + } + return GST_BASE_SRC_CLASS (parent_class)->event (src, event); +} + + static gboolean gst_v4l2src_negotiate (GstBaseSrc * basesrc) {