static GstStateChangeReturn gst_auto_video_sink_change_state (GstElement * element, GstStateChange transition) { GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS; GstAutoVideoSink *sink = GST_AUTO_VIDEO_SINK (element); switch (transition) { case GST_STATE_CHANGE_NULL_TO_READY: if (!gst_auto_video_sink_detect (sink)) return GST_STATE_CHANGE_FAILURE; break; default: break; } ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition); switch (transition) { case GST_STATE_CHANGE_READY_TO_NULL: gst_auto_video_sink_reset (sink); break; default: break; } return ret; }
static void gst_auto_video_sink_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec) { GstAutoVideoSink *sink = GST_AUTO_VIDEO_SINK (object); switch (prop_id) { case PROP_CAPS: if (sink->filter_caps) gst_caps_unref (sink->filter_caps); sink->filter_caps = gst_caps_copy (gst_value_get_caps (value)); break; case PROP_TS_OFFSET: sink->ts_offset = g_value_get_int64 (value); if (sink->kid) g_object_set_property (G_OBJECT (sink->kid), pspec->name, value); break; case PROP_SYNC: sink->sync = g_value_get_boolean (value); if (sink->kid) g_object_set_property (G_OBJECT (sink->kid), pspec->name, value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }
static void gst_auto_video_sink_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec) { GstAutoVideoSink *sink = GST_AUTO_VIDEO_SINK (object); switch (prop_id) { case PROP_CAPS:{ gst_value_set_caps (value, sink->filter_caps); break; } default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }