element: add gst_element_class_add_static_pad_template()
authorTim-Philipp Müller <tim@centricular.com>
Sat, 27 Feb 2016 15:28:49 +0000 (15:28 +0000)
committerTim-Philipp Müller <tim@centricular.com>
Sun, 28 Feb 2016 13:10:03 +0000 (13:10 +0000)
Pretty much every single element does

  gst_element_class_add_pad_template (element_class,
      gst_static_pad_template_get (&some_templ));

which is both confusing and unnecessary. We might just
as well add a function to do that in one step.

https://bugzilla.gnome.org/show_bug.cgi?id=762778

docs/gst/gstreamer-sections.txt
gst/gstelement.c
gst/gstelement.h
win32/common/libgstreamer.def

index 0443951..e9bd819 100644 (file)
@@ -827,6 +827,7 @@ GST_ELEMENT_METADATA_LONGNAME
 
 <SUBSECTION element-construction>
 gst_element_class_add_pad_template
+gst_element_class_add_static_pad_template
 gst_element_class_get_pad_template
 gst_element_class_get_pad_template_list
 gst_element_class_set_metadata
index 6bc013d..cfac92f 100644 (file)
@@ -1230,6 +1230,26 @@ gst_element_class_add_pad_template (GstElementClass * klass,
 }
 
 /**
+ * gst_element_class_add_static_pad_template:
+ * @klass: the #GstElementClass to add the pad template to.
+ * @templ: #GstStaticPadTemplate to add as pad template to the element class.
+ *
+ * Adds a pad template to an element class based on the static pad template
+ * @templ. This is mainly used in the _class_init functions of element
+ * implementations. If a pad template with the same name already exists,
+ * the old one is replaced by the new one.
+ *
+ * Since: 1.8
+ */
+void
+gst_element_class_add_static_pad_template (GstElementClass * klass,
+    GstStaticPadTemplate * static_templ)
+{
+  gst_element_class_add_pad_template (klass,
+      gst_static_pad_template_get (static_templ));
+}
+
+/**
  * gst_element_class_add_metadata:
  * @klass: class to set metadata for
  * @key: the key to set
index 0bd92d0..942248d 100644 (file)
@@ -663,6 +663,9 @@ struct _GstElementClass
 
 /* element class pad templates */
 void                    gst_element_class_add_pad_template      (GstElementClass *klass, GstPadTemplate *templ);
+
+void                    gst_element_class_add_static_pad_template (GstElementClass *klass, GstStaticPadTemplate *static_templ);
+
 GstPadTemplate*         gst_element_class_get_pad_template      (GstElementClass *element_class, const gchar *name);
 GList*                  gst_element_class_get_pad_template_list (GstElementClass *element_class);
 
index 9f96c13..3fa3c40 100644 (file)
@@ -480,6 +480,7 @@ EXPORTS
        gst_element_class_add_metadata
        gst_element_class_add_pad_template
        gst_element_class_add_static_metadata
+       gst_element_class_add_static_pad_template
        gst_element_class_get_metadata
        gst_element_class_get_pad_template
        gst_element_class_get_pad_template_list