static void gst_frei0r_mixer_class_init (GstFrei0rMixerClass * klass, GstFrei0rMixerClassData * class_data) { GObjectClass *gobject_class = (GObjectClass *) klass; GstElementClass *gstelement_class = (GstElementClass *) klass; GstPadTemplate *templ; GstCaps *caps; gchar *author; klass->ftable = &class_data->ftable; klass->info = &class_data->info; gobject_class->finalize = gst_frei0r_mixer_finalize; gobject_class->set_property = gst_frei0r_mixer_set_property; gobject_class->get_property = gst_frei0r_mixer_get_property; klass->n_properties = klass->info->num_params; klass->properties = g_new0 (GstFrei0rProperty, klass->n_properties); gst_frei0r_klass_install_properties (gobject_class, klass->ftable, klass->properties, klass->n_properties); author = g_strdup_printf ("Sebastian Dröge <*****@*****.**>, %s", class_data->info.author); gst_element_class_set_details_simple (gstelement_class, class_data->info.name, "Filter/Editor/Video", class_data->info.explanation, author); g_free (author); caps = gst_frei0r_caps_from_color_model (class_data->info.color_model); templ = gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS, gst_caps_ref (caps)); gst_element_class_add_pad_template (gstelement_class, templ); templ = gst_pad_template_new ("sink_0", GST_PAD_SINK, GST_PAD_ALWAYS, gst_caps_ref (caps)); gst_element_class_add_pad_template (gstelement_class, templ); templ = gst_pad_template_new ("sink_1", GST_PAD_SINK, GST_PAD_ALWAYS, gst_caps_ref (caps)); gst_element_class_add_pad_template (gstelement_class, templ); if (klass->info->plugin_type == F0R_PLUGIN_TYPE_MIXER3) { templ = gst_pad_template_new ("sink_2", GST_PAD_SINK, GST_PAD_ALWAYS, gst_caps_ref (caps)); gst_element_class_add_pad_template (gstelement_class, templ); } gst_caps_unref (caps); gstelement_class->change_state = GST_DEBUG_FUNCPTR (gst_frei0r_mixer_change_state); }
static void gst_frei0r_filter_class_init (GstFrei0rFilterClass * klass, GstFrei0rFilterClassData * class_data) { GObjectClass *gobject_class = (GObjectClass *) klass; GstElementClass *gstelement_class = (GstElementClass *) klass; GstBaseTransformClass *gsttrans_class = (GstBaseTransformClass *) klass; GstPadTemplate *templ; GstCaps *caps; gchar *author; klass->ftable = &class_data->ftable; klass->info = &class_data->info; gobject_class->finalize = gst_frei0r_filter_finalize; gobject_class->set_property = gst_frei0r_filter_set_property; gobject_class->get_property = gst_frei0r_filter_get_property; klass->n_properties = klass->info->num_params; klass->properties = g_new0 (GstFrei0rProperty, klass->n_properties); gst_frei0r_klass_install_properties (gobject_class, klass->ftable, klass->properties, klass->n_properties); author = g_strdup_printf ("Sebastian Dröge <*****@*****.**>, %s", class_data->info.author); gst_element_class_set_details_simple (gstelement_class, class_data->info.name, "Filter/Effect/Video", class_data->info.explanation, author); g_free (author); caps = gst_frei0r_caps_from_color_model (class_data->info.color_model); templ = gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS, gst_caps_ref (caps)); gst_element_class_add_pad_template (gstelement_class, templ); templ = gst_pad_template_new ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, caps); gst_element_class_add_pad_template (gstelement_class, templ); gsttrans_class->set_caps = GST_DEBUG_FUNCPTR (gst_frei0r_filter_set_caps); gsttrans_class->stop = GST_DEBUG_FUNCPTR (gst_frei0r_filter_stop); gsttrans_class->transform = GST_DEBUG_FUNCPTR (gst_frei0r_filter_transform); }