static void gst_timestampoverlay_class_init (GstTimeStampOverlayClass * klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass); GstBaseTransformClass *base_transform_class = GST_BASE_TRANSFORM_CLASS (klass); GstVideoFilterClass *video_filter_class = GST_VIDEO_FILTER_CLASS (klass); /* Setting up pads and setting metadata should be moved to base_class_init if you intend to subclass this class. */ gst_element_class_add_pad_template (gstelement_class, gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS, gst_caps_from_string (VIDEO_SRC_CAPS))); gst_element_class_add_pad_template (gstelement_class, gst_pad_template_new ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, gst_caps_from_string (VIDEO_SINK_CAPS))); gst_element_class_set_static_metadata (gstelement_class, "Timestampoverlay", "Generic", "Draws the various timestamps on the " "video so they can be read off the video afterwards", "William Manley <*****@*****.**>"); gobject_class->dispose = GST_DEBUG_FUNCPTR (gst_timestampoverlay_dispose); gstelement_class->set_clock = GST_DEBUG_FUNCPTR (gst_timestampoverlay_set_clock); base_transform_class->src_event = GST_DEBUG_FUNCPTR (gst_timestampoverlay_src_event); video_filter_class->transform_frame_ip = GST_DEBUG_FUNCPTR (gst_timestampoverlay_transform_frame_ip); }
static void gst_video_analyse_class_init (GstVideoAnalyseClass * klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); GstVideoFilterClass *video_filter_class = GST_VIDEO_FILTER_CLASS (klass); gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass), gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS, gst_caps_from_string (VIDEO_CAPS))); gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass), gst_pad_template_new ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, gst_caps_from_string (VIDEO_CAPS))); gst_element_class_set_static_metadata (GST_ELEMENT_CLASS (klass), "Video analyser", "Filter/Analyzer/Video", "Analyse video signal", "Wim Taymans <*****@*****.**>"); gobject_class->set_property = gst_video_analyse_set_property; gobject_class->get_property = gst_video_analyse_get_property; gobject_class->finalize = gst_video_analyse_finalize; video_filter_class->transform_frame_ip = GST_DEBUG_FUNCPTR (gst_video_analyse_transform_frame_ip); g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_MESSAGE, g_param_spec_boolean ("message", "Message", "Post statics messages", DEFAULT_MESSAGE, G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS)); //trans_class->passthrough_on_same_caps = TRUE; }
static void gst_recur_video_class_init (GstRecurVideoClass * g_class) { //GstBaseTransformClass *trans_class = GST_BASE_TRANSFORM_CLASS (g_class); GstElementClass *gstelement_class = (GstElementClass *) g_class; GST_DEBUG_CATEGORY_INIT (recur_video_debug, "recur_video", RECUR_LOG_COLOUR, "recur video"); GObjectClass *gobject_class = G_OBJECT_CLASS (g_class); GstVideoFilterClass *vf_class = GST_VIDEO_FILTER_CLASS (g_class); gobject_class->set_property = gst_recur_video_set_property; gobject_class->get_property = gst_recur_video_get_property; gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_recur_video_finalize); gst_element_class_add_pad_template (gstelement_class, gst_static_pad_template_get (&sink_factory)); gst_element_class_add_pad_template (gstelement_class, gst_static_pad_template_get (&src_factory)); gst_element_class_set_static_metadata (gstelement_class, "Recur video sub-element", "Filter/Video", "Mangles video", "Douglas Bagnall <*****@*****.**>"); vf_class->transform_frame = GST_DEBUG_FUNCPTR (gst_recur_video_transform_frame); vf_class->set_info = GST_DEBUG_FUNCPTR (set_info); GST_INFO("gst class init\n"); }
static void gst_comb_detect_class_init (GstCombDetectClass * klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); GstBaseTransformClass *base_transform_class = GST_BASE_TRANSFORM_CLASS (klass); GstVideoFilterClass *video_filter_class = GST_VIDEO_FILTER_CLASS (klass); /* Setting up pads and setting metadata should be moved to base_class_init if you intend to subclass this class. */ gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass), gst_static_pad_template_get (&gst_comb_detect_sink_template)); gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass), gst_static_pad_template_get (&gst_comb_detect_src_template)); gst_element_class_set_static_metadata (GST_ELEMENT_CLASS (klass), "Comb Detect", "Video/Filter", "Detect combing artifacts in video stream", "David Schleef <*****@*****.**>"); gobject_class->set_property = gst_comb_detect_set_property; gobject_class->get_property = gst_comb_detect_get_property; gobject_class->dispose = gst_comb_detect_dispose; gobject_class->finalize = gst_comb_detect_finalize; base_transform_class->transform_caps = GST_DEBUG_FUNCPTR (gst_comb_detect_transform_caps); base_transform_class->start = GST_DEBUG_FUNCPTR (gst_comb_detect_start); base_transform_class->stop = GST_DEBUG_FUNCPTR (gst_comb_detect_stop); video_filter_class->set_info = GST_DEBUG_FUNCPTR (gst_comb_detect_set_info); video_filter_class->transform_frame = GST_DEBUG_FUNCPTR (gst_comb_detect_transform_frame); }
static void gst_skor_sink_class_init (GstSkorSinkClass * klass) { GObjectClass *gobject_class; GstElementClass *gstelement_class; GstBaseTransformClass *trans_class; GstVideoFilterClass *vfilter_class; gobject_class = (GObjectClass *) klass; gstelement_class = (GstElementClass *) klass; trans_class = GST_BASE_TRANSFORM_CLASS (klass); vfilter_class = GST_VIDEO_FILTER_CLASS (klass); gobject_class->set_property = gst_skor_sink_set_property; gobject_class->get_property = gst_skor_sink_get_property; gobject_class->finalize = gst_skor_sink_finalize; g_object_class_install_property (gobject_class, PROP_MESSAGE, g_param_spec_boolean ("message", "message", "Post a barcode message for each detected code", DEFAULT_MESSAGE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_ATTACH_FRAME, g_param_spec_boolean ("attach-frame", "Attach frame", "Attach a frame dump to each barcode message", DEFAULT_ATTACH_FRAME, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_CACHE, g_param_spec_boolean ("cache", "cache", "Enable or disable the inter-image result cache", DEFAULT_CACHE, G_PARAM_READWRITE | GST_PARAM_MUTABLE_READY | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_DATA_CONSUMER, g_param_spec_pointer ("dataconsumer", "Data Consumer", "Function pointer of type void (*)(const char *) that will be invoked for every decoded datum", G_PARAM_WRITABLE | GST_PARAM_MUTABLE_READY | G_PARAM_STATIC_STRINGS)); gst_element_class_set_details_simple(gstelement_class, "SkorSink", "Filter/Analyzer/Video", "Detect bar codes in the video streams", "Phil <*****@*****.**>"); gst_element_class_add_pad_template (gstelement_class, gst_static_pad_template_get (&gst_skor_sink_src_template)); gst_element_class_add_pad_template (gstelement_class, gst_static_pad_template_get (&gst_skor_sink_sink_template)); trans_class->start = GST_DEBUG_FUNCPTR (gst_skor_sink_start); trans_class->stop = GST_DEBUG_FUNCPTR (gst_skor_sink_stop); trans_class->transform_ip_on_passthrough = FALSE; vfilter_class->transform_frame_ip = GST_DEBUG_FUNCPTR (gst_skor_sink_transform_frame_ip); }
static void kms_image_overlay_class_init (KmsImageOverlayClass * klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); GstVideoFilterClass *video_filter_class = GST_VIDEO_FILTER_CLASS (klass); GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, PLUGIN_NAME, 0, PLUGIN_NAME); GST_DEBUG ("class init"); /* Setting up pads and setting metadata should be moved to base_class_init if you intend to subclass this class. */ gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass), gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS, gst_caps_from_string (VIDEO_SRC_CAPS))); gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass), gst_pad_template_new ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, gst_caps_from_string (VIDEO_SINK_CAPS))); gst_element_class_set_static_metadata (GST_ELEMENT_CLASS (klass), "image overlay element", "Video/Filter", "Set a defined image in a defined position", "David Fernandez <*****@*****.**>"); gobject_class->set_property = kms_image_overlay_set_property; gobject_class->get_property = kms_image_overlay_get_property; gobject_class->dispose = kms_image_overlay_dispose; gobject_class->finalize = kms_image_overlay_finalize; video_filter_class->transform_frame_ip = GST_DEBUG_FUNCPTR (kms_image_overlay_transform_frame_ip); /* Properties initialization */ g_object_class_install_property (gobject_class, PROP_SHOW_DEBUG_INFO, g_param_spec_boolean ("show-debug-region", "show debug region", "show evaluation regions over the image", FALSE, G_PARAM_READWRITE)); g_object_class_install_property (gobject_class, PROP_IMAGE_TO_OVERLAY, g_param_spec_boxed ("image-to-overlay", "image to overlay", "set the url of the image to overlay in the image", GST_TYPE_STRUCTURE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); klass->base_facedetector_class.parent_class.sink_event = GST_DEBUG_FUNCPTR (kms_image_overlay_sink_events); g_type_class_add_private (klass, sizeof (KmsImageOverlayPrivate)); }
static void gval_sift_class_init(GvalSiftClass* klass) { GObjectClass* gobject_class = G_OBJECT_CLASS(klass); //GstBaseTransformClass* base_transform_class // = GST_BASE_TRANSFORM_CLASS(klass); GstVideoFilterClass* video_filter_class = GST_VIDEO_FILTER_CLASS(klass); /* Setting up pads and setting metadata should be moved to base_class_init if you intend to subclass this class. */ gst_element_class_add_pad_template( GST_ELEMENT_CLASS(klass), gst_pad_template_new("src", GST_PAD_SRC, GST_PAD_ALWAYS, gst_caps_from_string(VIDEO_SRC_CAPS))); gst_element_class_add_pad_template( GST_ELEMENT_CLASS(klass), gst_pad_template_new("sink", GST_PAD_SINK, GST_PAD_ALWAYS, gst_caps_from_string(VIDEO_SINK_CAPS))); gst_element_class_set_static_metadata(GST_ELEMENT_CLASS(klass), "SIFT", "gval/feature", "SIFT Descriptors", "Weipeng He <*****@*****.**>"); gobject_class->set_property = gval_sift_set_property; gobject_class->get_property = gval_sift_get_property; gobject_class->dispose = gval_sift_dispose; sift_props[PROP_SILENT] = g_param_spec_boolean( "silent", "Silent", "Produce verbose output ?", FALSE, G_PARAM_READWRITE); sift_props[PROP_LOCATION] = g_param_spec_string( "location", "Location", "Path to the output file", NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT); sift_props[PROP_MSCALE] = g_param_spec_double( "mscale", "min scale", "minimal scale of keypoint (pixel)", 0.0, 1024.0, 0.0, G_PARAM_READWRITE | G_PARAM_CONSTRUCT); g_object_class_install_properties(gobject_class, N_PROPERTIES, sift_props); video_filter_class->set_info = GST_DEBUG_FUNCPTR(gval_sift_set_info); video_filter_class->transform_frame_ip = GST_DEBUG_FUNCPTR(gval_sift_transform_frame_ip); }
static void gst_zbar_class_init (GstZBarClass * g_class) { GObjectClass *gobject_class; GstElementClass *gstelement_class; GstBaseTransformClass *trans_class; GstVideoFilterClass *vfilter_class; gobject_class = G_OBJECT_CLASS (g_class); gstelement_class = GST_ELEMENT_CLASS (g_class); trans_class = GST_BASE_TRANSFORM_CLASS (g_class); vfilter_class = GST_VIDEO_FILTER_CLASS (g_class); gobject_class->set_property = gst_zbar_set_property; gobject_class->get_property = gst_zbar_get_property; gobject_class->finalize = gst_zbar_finalize; g_object_class_install_property (gobject_class, PROP_MESSAGE, g_param_spec_boolean ("message", "message", "Post a barcode message for each detected code", DEFAULT_MESSAGE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_CACHE, g_param_spec_boolean ("cache", "cache", "Enable or disable the inter-image result cache", DEFAULT_CACHE, G_PARAM_READWRITE | GST_PARAM_MUTABLE_READY | G_PARAM_STATIC_STRINGS)); gst_element_class_set_metadata (gstelement_class, "Barcode detector", "Filter/Analyzer/Video", "Detect bar codes in the video streams", "Stefan Kost <*****@*****.**>"); gst_element_class_add_pad_template (gstelement_class, gst_static_pad_template_get (&gst_zbar_sink_template)); gst_element_class_add_pad_template (gstelement_class, gst_static_pad_template_get (&gst_zbar_src_template)); trans_class->start = GST_DEBUG_FUNCPTR (gst_zbar_start); trans_class->stop = GST_DEBUG_FUNCPTR (gst_zbar_stop); trans_class->transform_ip_on_passthrough = FALSE; vfilter_class->transform_frame_ip = GST_DEBUG_FUNCPTR (gst_zbar_transform_frame_ip); }
static void kms_crowd_detector_class_init (KmsCrowdDetectorClass * klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); GstBaseTransformClass *base_transform_class = GST_BASE_TRANSFORM_CLASS (klass); GstVideoFilterClass *video_filter_class = GST_VIDEO_FILTER_CLASS (klass); /* Setting up pads and setting metadata should be moved to base_class_init if you intend to subclass this class. */ gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass), gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS, gst_caps_from_string (VIDEO_SRC_CAPS))); gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass), gst_pad_template_new ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, gst_caps_from_string (VIDEO_SINK_CAPS))); gst_element_class_set_static_metadata (GST_ELEMENT_CLASS (klass), "Crowd detector element", "Video/Filter", "Detects crowded areas based on movement detection", "Francisco Rivero <*****@*****.**>"); gobject_class->set_property = kms_crowd_detector_set_property; gobject_class->get_property = kms_crowd_detector_get_property; gobject_class->dispose = kms_crowd_detector_dispose; gobject_class->finalize = kms_crowd_detector_finalize; base_transform_class->start = GST_DEBUG_FUNCPTR (kms_crowd_detector_start); base_transform_class->stop = GST_DEBUG_FUNCPTR (kms_crowd_detector_stop); video_filter_class->set_info = GST_DEBUG_FUNCPTR (kms_crowd_detector_set_info); video_filter_class->transform_frame_ip = GST_DEBUG_FUNCPTR (kms_crowd_detector_transform_frame_ip); g_object_class_install_property (gobject_class, PROP_SHOW_DEBUG_INFO, g_param_spec_boolean ("show-debug-info", "show debug info", "show debug info", FALSE, G_PARAM_READWRITE)); g_object_class_install_property (gobject_class, PROP_ROIS, g_param_spec_boxed ("rois", "rois", "set regions of interest to analize", GST_TYPE_STRUCTURE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /* Registers a private structure for the instantiatable type */ g_type_class_add_private (klass, sizeof (KmsCrowdDetectorPrivate)); }
static void kms_face_detector_class_init (KmsFaceDetectorClass * klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); GstVideoFilterClass *video_filter_class = GST_VIDEO_FILTER_CLASS (klass); GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, PLUGIN_NAME, 0, PLUGIN_NAME); /* Setting up pads and setting metadata should be moved to base_class_init if you intend to subclass this class. */ gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass), gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS, gst_caps_from_string (VIDEO_SRC_CAPS))); gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass), gst_pad_template_new ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, gst_caps_from_string (VIDEO_SINK_CAPS))); gst_element_class_set_static_metadata (GST_ELEMENT_CLASS (klass), "Face Detector element", "Video/Filter", "Detect faces in an image", "David Fernandez <*****@*****.**>"); gobject_class->set_property = kms_face_detector_set_property; gobject_class->get_property = kms_face_detector_get_property; gobject_class->finalize = kms_face_detector_finalize; video_filter_class->transform_frame_ip = GST_DEBUG_FUNCPTR (kms_face_detector_transform_frame_ip); /* Properties initialization */ g_object_class_install_property (gobject_class, PROP_SHOW_DEBUG_INFO, g_param_spec_boolean ("show-debug-region", "show debug region", "show evaluation regions over the image", FALSE, G_PARAM_READWRITE)); g_object_class_install_property (gobject_class, PROP_FILTER_VERSION, g_param_spec_boolean ("filter-version", "filter version", "True means filter based on haar detector. False filter based on lbp", TRUE, G_PARAM_READWRITE)); klass->base_facedetector_class.parent_class.src_event = GST_DEBUG_FUNCPTR (kms_face_detector_src_eventfunc); g_type_class_add_private (klass, sizeof (KmsFaceDetectorPrivate)); }
static void gst_scene_change_class_init (GstSceneChangeClass * klass) { GstVideoFilterClass *video_filter_class = GST_VIDEO_FILTER_CLASS (klass); gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass), gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS, gst_caps_from_string (VIDEO_CAPS))); gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass), gst_pad_template_new ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, gst_caps_from_string (VIDEO_CAPS))); gst_element_class_set_static_metadata (GST_ELEMENT_CLASS (klass), "Scene change detector", "Video/Filter", "Detects scene changes in video", "David Schleef <*****@*****.**>"); video_filter_class->transform_frame_ip = GST_DEBUG_FUNCPTR (gst_scene_change_transform_frame_ip); }
static void gst_zebra_stripe_class_init (GstZebraStripeClass * klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); GstBaseTransformClass *base_transform_class = GST_BASE_TRANSFORM_CLASS (klass); GstVideoFilterClass *video_filter_class = GST_VIDEO_FILTER_CLASS (klass); /* Setting up pads and setting metadata should be moved to base_class_init if you intend to subclass this class. */ gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass), gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS, gst_caps_from_string (VIDEO_CAPS))); gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass), gst_pad_template_new ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, gst_caps_from_string (VIDEO_CAPS))); gst_element_class_set_static_metadata (GST_ELEMENT_CLASS (klass), "Zebra stripe overlay", "Filter/Analysis", "Overlays zebra striping on overexposed areas of video", "David Schleef <*****@*****.**>"); gobject_class->set_property = gst_zebra_stripe_set_property; gobject_class->get_property = gst_zebra_stripe_get_property; base_transform_class->start = GST_DEBUG_FUNCPTR (gst_zebra_stripe_start); base_transform_class->stop = GST_DEBUG_FUNCPTR (gst_zebra_stripe_stop); video_filter_class->transform_frame_ip = GST_DEBUG_FUNCPTR (gst_zebra_stripe_transform_frame_ip); g_object_class_install_property (gobject_class, PROP_THRESHOLD, g_param_spec_int ("threshold", "Threshold", "Threshold above which the video is striped", 0, 100, DEFAULT_THRESHOLD, G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS)); }
static void gst_gdk_pixbuf_overlay_class_init (GstGdkPixbufOverlayClass * klass) { GstVideoFilterClass *videofilter_class = GST_VIDEO_FILTER_CLASS (klass); GstBaseTransformClass *basetrans_class = GST_BASE_TRANSFORM_CLASS (klass); GstElementClass *element_class = GST_ELEMENT_CLASS (klass); GObjectClass *gobject_class = G_OBJECT_CLASS (klass); gobject_class->set_property = gst_gdk_pixbuf_overlay_set_property; gobject_class->get_property = gst_gdk_pixbuf_overlay_get_property; gobject_class->finalize = gst_gdk_pixbuf_overlay_finalize; basetrans_class->start = GST_DEBUG_FUNCPTR (gst_gdk_pixbuf_overlay_start); basetrans_class->stop = GST_DEBUG_FUNCPTR (gst_gdk_pixbuf_overlay_stop); basetrans_class->before_transform = GST_DEBUG_FUNCPTR (gst_gdk_pixbuf_overlay_before_transform); videofilter_class->set_info = GST_DEBUG_FUNCPTR (gst_gdk_pixbuf_overlay_set_info); videofilter_class->transform_frame_ip = GST_DEBUG_FUNCPTR (gst_gdk_pixbuf_overlay_transform_frame_ip); g_object_class_install_property (gobject_class, PROP_LOCATION, g_param_spec_string ("location", "location", "Location of image file to overlay", NULL, GST_PARAM_CONTROLLABLE | GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_OFFSET_X, g_param_spec_int ("offset-x", "X Offset", "For positive value, horizontal offset of overlay image in pixels from" " left of video image. For negative value, horizontal offset of overlay" " image in pixels from right of video image", G_MININT, G_MAXINT, 0, GST_PARAM_CONTROLLABLE | GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_OFFSET_Y, g_param_spec_int ("offset-y", "Y Offset", "For positive value, vertical offset of overlay image in pixels from" " top of video image. For negative value, vertical offset of overlay" " image in pixels from bottom of video image", G_MININT, G_MAXINT, 0, GST_PARAM_CONTROLLABLE | GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_RELATIVE_X, g_param_spec_double ("relative-x", "Relative X Offset", "Horizontal offset of overlay image in fractions of video image " "width, from top-left corner of video image", 0.0, 1.0, 0.0, GST_PARAM_CONTROLLABLE | GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_RELATIVE_Y, g_param_spec_double ("relative-y", "Relative Y Offset", "Vertical offset of overlay image in fractions of video image " "height, from top-left corner of video image", 0.0, 1.0, 0.0, GST_PARAM_CONTROLLABLE | GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_OVERLAY_WIDTH, g_param_spec_int ("overlay-width", "Overlay Width", "Width of overlay image in pixels (0 = same as overlay image)", 0, G_MAXINT, 0, GST_PARAM_CONTROLLABLE | GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_OVERLAY_HEIGHT, g_param_spec_int ("overlay-height", "Overlay Height", "Height of overlay image in pixels (0 = same as overlay image)", 0, G_MAXINT, 0, GST_PARAM_CONTROLLABLE | GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_ALPHA, g_param_spec_double ("alpha", "Alpha", "Global alpha of overlay image", 0.0, 1.0, 1.0, GST_PARAM_CONTROLLABLE | GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GstGdkPixbufOverlay:pixbuf: * * GdkPixbuf object to render. * * Since: 1.6 */ g_object_class_install_property (gobject_class, PROP_PIXBUF, g_param_spec_object ("pixbuf", "Pixbuf", "GdkPixbuf object to render", GDK_TYPE_PIXBUF, GST_PARAM_CONTROLLABLE | GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GstGdkPixbufOverlay:positioning-mode: * * Positioning mode of offset-x and offset-y properties. Determines how * negative x/y offsets will be interpreted. By default negative values * are for positioning relative to the right/bottom edge of the video * image, but you can use this property to select absolute positioning * relative to a (0, 0) origin in the top-left corner. That way negative * offsets will be to the left/above the video image, which allows you to * smoothly slide logos into and out of the frame if desired. * * Since: 1.6 */ g_object_class_install_property (gobject_class, PROP_POSITIONING_MODE, g_param_spec_enum ("positioning-mode", "Positioning mode", "Positioning mode of offset-x and offset-y properties", GST_TYPE_GDK_PIXBUF_POSITIONING_MODE, DEFAULT_POSITIONING_MODE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); gst_element_class_add_pad_template (element_class, gst_static_pad_template_get (&sink_template)); gst_element_class_add_pad_template (element_class, gst_static_pad_template_get (&src_template)); gst_element_class_set_static_metadata (element_class, "GdkPixbuf Overlay", "Filter/Effect/Video", "Overlay an image onto a video stream", "Tim-Philipp Müller <tim centricular net>"); GST_DEBUG_CATEGORY_INIT (gdkpixbufoverlay_debug, "gdkpixbufoverlay", 0, "debug category for gdkpixbufoverlay element"); }
static void kms_pointer_detector_class_init (KmsPointerDetectorClass * klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); GstBaseTransformClass *base_transform_class = GST_BASE_TRANSFORM_CLASS (klass); GstVideoFilterClass *video_filter_class = GST_VIDEO_FILTER_CLASS (klass); /* Setting up pads and setting metadata should be moved to base_class_init if you intend to subclass this class. */ gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass), gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS, gst_caps_from_string (VIDEO_SRC_CAPS))); gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass), gst_pad_template_new ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, gst_caps_from_string (VIDEO_SINK_CAPS))); gst_element_class_set_static_metadata (GST_ELEMENT_CLASS (klass), "Pointer detector element", "Video/Filter", "Detects pointer an raises events with its position", "Francisco Rivero <*****@*****.**>"); gobject_class->set_property = kms_pointer_detector_set_property; gobject_class->get_property = kms_pointer_detector_get_property; gobject_class->dispose = kms_pointer_detector_dispose; gobject_class->finalize = kms_pointer_detector_finalize; base_transform_class->start = GST_DEBUG_FUNCPTR (kms_pointer_detector_start); base_transform_class->stop = GST_DEBUG_FUNCPTR (kms_pointer_detector_stop); video_filter_class->set_info = GST_DEBUG_FUNCPTR (kms_pointer_detector_set_info); video_filter_class->transform_frame_ip = GST_DEBUG_FUNCPTR (kms_pointer_detector_transform_frame_ip); /* Properties initialization */ g_object_class_install_property (gobject_class, PROP_NUM_REGIONS, g_param_spec_int ("num-regions-eval", "num regions eval", "Number of regions evaluated when searching for similar regions", 20, 400, 150, G_PARAM_READWRITE)); g_object_class_install_property (gobject_class, PROP_WINDOW_SCALE, g_param_spec_int ("scale-search-window", "scale search window", "Fix the size of the searching window", 2, 100, 5, G_PARAM_READWRITE)); g_object_class_install_property (gobject_class, PROP_SHOW_DEBUG_INFO, g_param_spec_boolean ("show-debug-region", "show debug region", "show evaluation regions over the image", FALSE, G_PARAM_READWRITE)); g_object_class_install_property (gobject_class, PROP_WINDOWS_LAYOUT, g_param_spec_boxed ("windows-layout", "windows layout", "supply the positions and dimensions of windows into the main window", GST_TYPE_STRUCTURE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_MESSAGE, g_param_spec_boolean ("message", "message", "Put a window-in or window-out message in the bus if " "an object enters o leaves a window", TRUE, G_PARAM_READWRITE)); g_object_class_install_property (gobject_class, PROP_SHOW_WINDOWS_LAYOUT, g_param_spec_boolean ("show-windows-layout", "show windows layout", "show windows layout over the image", TRUE, G_PARAM_READWRITE)); }
static void gst_gdk_pixbuf_overlay_class_init (GstGdkPixbufOverlayClass * klass) { GstVideoFilterClass *videofilter_class = GST_VIDEO_FILTER_CLASS (klass); GstBaseTransformClass *basetrans_class = GST_BASE_TRANSFORM_CLASS (klass); GstElementClass *element_class = GST_ELEMENT_CLASS (klass); GObjectClass *gobject_class = G_OBJECT_CLASS (klass); gobject_class->set_property = gst_gdk_pixbuf_overlay_set_property; gobject_class->get_property = gst_gdk_pixbuf_overlay_get_property; gobject_class->finalize = gst_gdk_pixbuf_overlay_finalize; basetrans_class->start = GST_DEBUG_FUNCPTR (gst_gdk_pixbuf_overlay_start); basetrans_class->stop = GST_DEBUG_FUNCPTR (gst_gdk_pixbuf_overlay_stop); basetrans_class->before_transform = GST_DEBUG_FUNCPTR (gst_gdk_pixbuf_overlay_before_transform); videofilter_class->set_info = GST_DEBUG_FUNCPTR (gst_gdk_pixbuf_overlay_set_info); videofilter_class->transform_frame_ip = GST_DEBUG_FUNCPTR (gst_gdk_pixbuf_overlay_transform_frame_ip); g_object_class_install_property (gobject_class, PROP_LOCATION, g_param_spec_string ("location", "location", "Location of image file to overlay", NULL, GST_PARAM_CONTROLLABLE | GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_OFFSET_X, g_param_spec_int ("offset-x", "X Offset", "For positive value, horizontal offset of overlay image in pixels from" " left of video image. For negative value, horizontal offset of overlay" " image in pixels from right of video image", G_MININT, G_MAXINT, 0, GST_PARAM_CONTROLLABLE | GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_OFFSET_Y, g_param_spec_int ("offset-y", "Y Offset", "For positive value, vertical offset of overlay image in pixels from" " top of video image. For negative value, vertical offset of overlay" " image in pixels from bottom of video image", G_MININT, G_MAXINT, 0, GST_PARAM_CONTROLLABLE | GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_RELATIVE_X, g_param_spec_double ("relative-x", "Relative X Offset", "Horizontal offset of overlay image in fractions of video image " "width, from top-left corner of video image", 0.0, 1.0, 0.0, GST_PARAM_CONTROLLABLE | GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_RELATIVE_Y, g_param_spec_double ("relative-y", "Relative Y Offset", "Vertical offset of overlay image in fractions of video image " "height, from top-left corner of video image", 0.0, 1.0, 0.0, GST_PARAM_CONTROLLABLE | GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_OVERLAY_WIDTH, g_param_spec_int ("overlay-width", "Overlay Width", "Width of overlay image in pixels (0 = same as overlay image)", 0, G_MAXINT, 0, GST_PARAM_CONTROLLABLE | GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_OVERLAY_HEIGHT, g_param_spec_int ("overlay-height", "Overlay Height", "Height of overlay image in pixels (0 = same as overlay image)", 0, G_MAXINT, 0, GST_PARAM_CONTROLLABLE | GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_ALPHA, g_param_spec_double ("alpha", "Alpha", "Global alpha of overlay image", 0.0, 1.0, 1.0, GST_PARAM_CONTROLLABLE | GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); gst_element_class_add_pad_template (element_class, gst_static_pad_template_get (&sink_template)); gst_element_class_add_pad_template (element_class, gst_static_pad_template_get (&src_template)); gst_element_class_set_static_metadata (element_class, "GdkPixbuf Overlay", "Filter/Effect/Video", "Overlay an image onto a video stream", "Tim-Philipp Müller <tim centricular net>"); GST_DEBUG_CATEGORY_INIT (gdkpixbufoverlay_debug, "gdkpixbufoverlay", 0, "debug category for gdkpixbufoverlay element"); }
static void gst_video_mark_class_init (GstSimpleVideoMarkClass * klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); GstBaseTransformClass *base_transform_class = GST_BASE_TRANSFORM_CLASS (klass); GstVideoFilterClass *video_filter_class = GST_VIDEO_FILTER_CLASS (klass); gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass), gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS, gst_caps_from_string (VIDEO_CAPS))); gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass), gst_pad_template_new ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, gst_caps_from_string (VIDEO_CAPS))); gst_element_class_set_static_metadata (GST_ELEMENT_CLASS (klass), "Video marker", "Filter/Effect/Video", "Marks a video signal with a pattern", "Wim Taymans <*****@*****.**>"); gobject_class->set_property = gst_video_mark_set_property; gobject_class->get_property = gst_video_mark_get_property; gobject_class->dispose = gst_video_mark_dispose; gobject_class->finalize = gst_video_mark_finalize; base_transform_class->start = GST_DEBUG_FUNCPTR (gst_video_mark_start); base_transform_class->stop = GST_DEBUG_FUNCPTR (gst_video_mark_stop); video_filter_class->set_info = GST_DEBUG_FUNCPTR (gst_video_mark_set_info); video_filter_class->transform_frame_ip = GST_DEBUG_FUNCPTR (gst_video_mark_transform_frame_ip); g_object_class_install_property (gobject_class, PROP_PATTERN_WIDTH, g_param_spec_int ("pattern-width", "Pattern width", "The width of the pattern markers", 1, G_MAXINT, DEFAULT_PATTERN_WIDTH, G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_PATTERN_HEIGHT, g_param_spec_int ("pattern-height", "Pattern height", "The height of the pattern markers", 1, G_MAXINT, DEFAULT_PATTERN_HEIGHT, G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_PATTERN_COUNT, g_param_spec_int ("pattern-count", "Pattern count", "The number of pattern markers", 0, G_MAXINT, DEFAULT_PATTERN_COUNT, G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_PATTERN_DATA_COUNT, g_param_spec_int ("pattern-data-count", "Pattern data count", "The number of extra data pattern markers", 0, 64, DEFAULT_PATTERN_DATA_COUNT, G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_PATTERN_DATA, g_param_spec_uint64 ("pattern-data", "Pattern data", "The extra data pattern markers", 0, G_MAXUINT64, DEFAULT_PATTERN_DATA, G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_ENABLED, g_param_spec_boolean ("enabled", "Enabled", "Enable or disable the filter", DEFAULT_ENABLED, G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_LEFT_OFFSET, g_param_spec_int ("left-offset", "Left Offset", "The offset from the left border where the pattern starts", 0, G_MAXINT, DEFAULT_LEFT_OFFSET, G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_BOTTOM_OFFSET, g_param_spec_int ("bottom-offset", "Bottom Offset", "The offset from the bottom border where the pattern starts", 0, G_MAXINT, DEFAULT_BOTTOM_OFFSET, G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS)); }
static void gst_video_detect_class_init (GstSimpleVideoMarkDetectClass * klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); GstBaseTransformClass *base_transform_class = GST_BASE_TRANSFORM_CLASS (klass); GstVideoFilterClass *video_filter_class = GST_VIDEO_FILTER_CLASS (klass); gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass), gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS, gst_caps_from_string (VIDEO_CAPS))); gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass), gst_pad_template_new ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, gst_caps_from_string (VIDEO_CAPS))); gst_element_class_set_static_metadata (GST_ELEMENT_CLASS (klass), "Video detecter", "Filter/Effect/Video", "Detect patterns in a video signal", "Wim Taymans <*****@*****.**>"); gobject_class->set_property = gst_video_detect_set_property; gobject_class->get_property = gst_video_detect_get_property; gobject_class->dispose = gst_video_detect_dispose; gobject_class->finalize = gst_video_detect_finalize; base_transform_class->start = GST_DEBUG_FUNCPTR (gst_video_detect_start); base_transform_class->stop = GST_DEBUG_FUNCPTR (gst_video_detect_stop); video_filter_class->set_info = GST_DEBUG_FUNCPTR (gst_video_detect_set_info); video_filter_class->transform_frame_ip = GST_DEBUG_FUNCPTR (gst_video_detect_transform_frame_ip); g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_MESSAGE, g_param_spec_boolean ("message", "Message", "Post detected data as bus messages", DEFAULT_MESSAGE, G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_PATTERN_WIDTH, g_param_spec_int ("pattern-width", "Pattern width", "The width of the pattern markers", 1, G_MAXINT, DEFAULT_PATTERN_WIDTH, G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_PATTERN_HEIGHT, g_param_spec_int ("pattern-height", "Pattern height", "The height of the pattern markers", 1, G_MAXINT, DEFAULT_PATTERN_HEIGHT, G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_PATTERN_COUNT, g_param_spec_int ("pattern-count", "Pattern count", "The number of pattern markers", 0, G_MAXINT, DEFAULT_PATTERN_COUNT, G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_PATTERN_DATA_COUNT, g_param_spec_int ("pattern-data-count", "Pattern data count", "The number of extra data pattern markers", 0, G_MAXINT, DEFAULT_PATTERN_DATA_COUNT, G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_PATTERN_CENTER, g_param_spec_double ("pattern-center", "Pattern center", "The center of the black/white separation (0.0 = lowest, 1.0 highest)", 0.0, 1.0, DEFAULT_PATTERN_CENTER, G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_PATTERN_SENSITIVITY, g_param_spec_double ("pattern-sensitivity", "Pattern sensitivity", "The sensitivity around the center for detecting the markers " "(0.0 = lowest, 1.0 highest)", 0.0, 1.0, DEFAULT_PATTERN_SENSITIVITY, G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_LEFT_OFFSET, g_param_spec_int ("left-offset", "Left Offset", "The offset from the left border where the pattern starts", 0, G_MAXINT, DEFAULT_LEFT_OFFSET, G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_BOTTOM_OFFSET, g_param_spec_int ("bottom-offset", "Bottom Offset", "The offset from the bottom border where the pattern starts", 0, G_MAXINT, DEFAULT_BOTTOM_OFFSET, G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS)); }
static void gst_rsvg_overlay_class_init (GstRsvgOverlayClass * klass) { GObjectClass *gobject_class = (GObjectClass *) klass; GstBaseTransformClass *basetransform_class = GST_BASE_TRANSFORM_CLASS (klass); GstVideoFilterClass *videofilter_class = GST_VIDEO_FILTER_CLASS (klass); GstElementClass *element_class = GST_ELEMENT_CLASS (klass); gst_element_class_add_static_pad_template (element_class, &src_template); gst_element_class_add_static_pad_template (element_class, &video_sink_template); gst_element_class_add_static_pad_template (element_class, &data_sink_template); gst_element_class_set_static_metadata (element_class, "RSVG overlay", "Filter/Editor/Video", "Overlays SVG graphics over a video stream", "Olivier Aubert <*****@*****.**>"); gobject_class->set_property = gst_rsvg_overlay_set_property; gobject_class->get_property = gst_rsvg_overlay_get_property; gobject_class->finalize = gst_rsvg_overlay_finalize; g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_DATA, g_param_spec_string ("data", "data", "SVG data.", "", G_PARAM_WRITABLE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_LOCATION, g_param_spec_string ("location", "location", "SVG file location.", "", G_PARAM_WRITABLE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_FIT_TO_FRAME, g_param_spec_boolean ("fit-to-frame", "fit to frame", "Fit the SVG to fill the whole frame.", TRUE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_X, g_param_spec_int ("x", "x offset", "Specify an x offset.", -G_MAXINT, G_MAXINT, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_Y, g_param_spec_int ("y", "y offset", "Specify a y offset.", -G_MAXINT, G_MAXINT, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_X_RELATIVE, g_param_spec_float ("x-relative", "x relative offset", "Specify an x offset relative to the display size.", -G_MAXFLOAT, G_MAXFLOAT, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_Y_RELATIVE, g_param_spec_float ("y-relative", "y relative offset", "Specify a y offset relative to the display size.", -G_MAXFLOAT, G_MAXFLOAT, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_WIDTH, g_param_spec_int ("width", "width", "Specify a width in pixels.", -G_MAXINT, G_MAXINT, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_HEIGHT, g_param_spec_int ("height", "height", "Specify a height in pixels.", -G_MAXINT, G_MAXINT, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_WIDTH_RELATIVE, g_param_spec_float ("width-relative", "relative width", "Specify a width relative to the display size.", -G_MAXFLOAT, G_MAXFLOAT, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_HEIGHT_RELATIVE, g_param_spec_float ("height-relative", "relative height", "Specify a height relative to the display size.", -G_MAXFLOAT, G_MAXFLOAT, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); videofilter_class->transform_frame_ip = gst_rsvg_overlay_transform_frame_ip; basetransform_class->stop = gst_rsvg_overlay_stop; basetransform_class->passthrough_on_same_caps = FALSE; }