gst-inspect: fix unused-const-variable error in windows
[platform/upstream/gstreamer.git] / gst / gstpadtemplate.c
index 77853fd..952f07e 100644 (file)
@@ -279,7 +279,7 @@ name_is_valid (const gchar * name, GstPadPresence presence)
       underscore = strchr (str, '_');
       str = strchr (str + 1, '%');
 
-      if (str && (!underscore || (underscore && str < underscore))) {
+      if (str && (!underscore || str < underscore)) {
         g_warning
             ("invalid name template %s: each of conversion specifications "
             "must be separated by an underscore", name);
@@ -299,7 +299,7 @@ G_DEFINE_POINTER_TYPE (GstStaticPadTemplate, gst_static_pad_template);
  *
  * Converts a #GstStaticPadTemplate into a #GstPadTemplate.
  *
- * Returns: (transfer floating): a new #GstPadTemplate.
+ * Returns: (transfer floating) (nullable): a new #GstPadTemplate.
  */
 /* FIXME0.11: rename to gst_pad_template_new_from_static_pad_template() */
 GstPadTemplate *
@@ -331,7 +331,7 @@ gst_static_pad_template_get (GstStaticPadTemplate * pad_template)
  *
  * Converts a #GstStaticPadTemplate into a #GstPadTemplate with a type.
  *
- * Returns: (transfer floating): a new #GstPadTemplate.
+ * Returns: (transfer floating) (nullable): a new #GstPadTemplate.
  *
  * Since: 1.14
  */
@@ -342,6 +342,8 @@ gst_pad_template_new_from_static_pad_template_with_gtype (GstStaticPadTemplate *
   GstPadTemplate *new;
   GstCaps *caps;
 
+  g_return_val_if_fail (g_type_is_a (pad_type, GST_TYPE_PAD), NULL);
+
   if (!name_is_valid (pad_template->name_template, pad_template->presence))
     return NULL;
 
@@ -369,7 +371,7 @@ gst_pad_template_new_from_static_pad_template_with_gtype (GstStaticPadTemplate *
  * Creates a new pad template with a name according to the given template
  * and with the given arguments.
  *
- * Returns: (transfer floating): a new #GstPadTemplate.
+ * Returns: (transfer floating) (nullable): a new #GstPadTemplate.
  */
 GstPadTemplate *
 gst_pad_template_new (const gchar * name_template,
@@ -396,6 +398,48 @@ gst_pad_template_new (const gchar * name_template,
 }
 
 /**
+ * gst_pad_template_new_with_gtype:
+ * @name_template: the name template.
+ * @direction: the #GstPadDirection of the template.
+ * @presence: the #GstPadPresence of the pad.
+ * @caps: (transfer none): a #GstCaps set for the template.
+ * @pad_type: The #GType of the pad to create
+ *
+ * Creates a new pad template with a name according to the given template
+ * and with the given arguments.
+ *
+ * Returns: (transfer floating) (nullable): a new #GstPadTemplate.
+ *
+ * Since: 1.14
+ */
+GstPadTemplate *
+gst_pad_template_new_with_gtype (const gchar * name_template,
+    GstPadDirection direction, GstPadPresence presence, GstCaps * caps,
+    GType pad_type)
+{
+  GstPadTemplate *new;
+
+  g_return_val_if_fail (name_template != NULL, NULL);
+  g_return_val_if_fail (caps != NULL, NULL);
+  g_return_val_if_fail (direction == GST_PAD_SRC
+      || direction == GST_PAD_SINK, NULL);
+  g_return_val_if_fail (presence == GST_PAD_ALWAYS
+      || presence == GST_PAD_SOMETIMES || presence == GST_PAD_REQUEST, NULL);
+  g_return_val_if_fail (g_type_is_a (pad_type, GST_TYPE_PAD), NULL);
+
+  if (!name_is_valid (name_template, presence)) {
+    return NULL;
+  }
+
+  new = g_object_new (gst_pad_template_get_type (),
+      "name", name_template, "name-template", name_template,
+      "direction", direction, "presence", presence, "caps", caps,
+      "gtype", pad_type, NULL);
+
+  return new;
+}
+
+/**
  * gst_static_pad_template_get_caps:
  * @templ: a #GstStaticPadTemplate to get capabilities of.
  *