static GstStateChangeReturn gst_compare_change_state (GstElement * element, GstStateChange transition) { GstCompare *comp = GST_COMPARE (element); GstStateChangeReturn ret; switch (transition) { case GST_STATE_CHANGE_NULL_TO_READY: case GST_STATE_CHANGE_READY_TO_PAUSED: gst_collect_pads_start (comp->cpads); break; case GST_STATE_CHANGE_PAUSED_TO_READY: gst_collect_pads_stop (comp->cpads); break; default: break; } ret = GST_CALL_PARENT_WITH_DEFAULT (GST_ELEMENT_CLASS, change_state, (element, transition), GST_STATE_CHANGE_SUCCESS); if (ret != GST_STATE_CHANGE_SUCCESS) return ret; switch (transition) { case GST_STATE_CHANGE_PAUSED_TO_READY: gst_compare_reset (comp); break; default: break; } return GST_STATE_CHANGE_SUCCESS; }
static void gst_compare_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec) { GstCompare *comp = GST_COMPARE (object); switch (prop_id) { case PROP_META: g_value_set_flags (value, comp->meta); break; case PROP_OFFSET_TS: g_value_set_boolean (value, comp->offset_ts); break; case PROP_METHOD: g_value_set_enum (value, comp->method); break; case PROP_THRESHOLD: g_value_set_double (value, comp->threshold); break; case PROP_UPPER: g_value_set_boolean (value, comp->upper); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }
static void gst_compare_finalize (GObject * object) { GstCompare *comp = GST_COMPARE (object); gst_object_unref (comp->cpads); G_OBJECT_CLASS (parent_class)->finalize (object); }
static gboolean gst_compare_query (GstPad * pad, GstObject * parent, GstQuery * query) { GstCompare *comp; GstPad *otherpad; comp = GST_COMPARE (parent); otherpad = (pad == comp->srcpad ? comp->sinkpad : comp->srcpad); return gst_pad_peer_query (otherpad, query); }
static GstCaps * gst_compare_getcaps (GstPad * pad) { GstCompare *comp; GstPad *otherpad; GstCaps *result; comp = GST_COMPARE (gst_pad_get_parent (pad)); if (G_UNLIKELY (comp == NULL)) return gst_caps_new_any (); otherpad = (pad == comp->srcpad ? comp->sinkpad : comp->srcpad); result = gst_pad_peer_get_caps (otherpad); if (result == NULL) result = gst_caps_new_any (); gst_object_unref (comp); return result; }