tags: API: Add functions to add single tags to GstTagList or GstTagSetter
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Thu, 7 May 2009 07:31:01 +0000 (09:31 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Tue, 12 May 2009 07:02:44 +0000 (09:02 +0200)
The new functions are gst_tag_setter_add_tag_value()
and gst_tag_list_add_value()). This fixes bug #581198.

gst/gsttaglist.c
gst/gsttaglist.h
gst/gsttagsetter.c
gst/gsttagsetter.h

index f37b1c1c8e67663acf5a557ba63bee6267f341e4..01f2e5f6009081b3d71056bee6ca588f06447304 100644 (file)
@@ -895,6 +895,29 @@ gst_tag_list_add_valist_values (GstTagList * list, GstTagMergeMode mode,
   }
 }
 
+/**
+ * gst_tag_list_add_value:
+ * @list: list to set tags in
+ * @mode: the mode to use
+ * @tag: tag
+ * @value: GValue for this tag
+ *
+ * Sets the GValue for a given tag using the specified mode.
+ *
+ * Since: 0.10.24
+ */
+void
+gst_tag_list_add_value (GstTagList * list, GstTagMergeMode mode,
+    const gchar * tag, const GValue * value)
+{
+  g_return_if_fail (GST_IS_TAG_LIST (list));
+  g_return_if_fail (GST_TAG_MODE_IS_VALID (mode));
+  g_return_if_fail (tag != NULL);
+
+  gst_tag_list_add_value_internal (list, mode, g_quark_from_string (tag),
+      value);
+}
+
 /**
  * gst_tag_list_remove_tag:
  * @list: list to remove tag from
index abf1eab3c74a77dbbc8518c1f94f1d75173fd0a7..7be74fd4ef0d445bfd2ef07d0cae698b02108b0b 100644 (file)
@@ -226,6 +226,10 @@ void         gst_tag_list_add_valist_values (GstTagList       * list,
                                              GstTagMergeMode    mode,
                                              const gchar      * tag,
                                              va_list            var_args);
+void         gst_tag_list_add_value         (GstTagList       * list,
+                                             GstTagMergeMode    mode,
+                                             const gchar      * tag,
+                                             const GValue     * value);
 void         gst_tag_list_remove_tag        (GstTagList       * list,
                                              const gchar      * tag);
 void         gst_tag_list_foreach           (const GstTagList * list,
index 62d933d7ea994339e528660f6d4e197208924510..487c7e8bb88576602cb13e63305abfc606a26ed1 100644 (file)
@@ -300,6 +300,33 @@ gst_tag_setter_add_tag_valist_values (GstTagSetter * setter,
   gst_tag_list_add_valist_values (data->list, mode, tag, var_args);
 }
 
+/**
+ * gst_tag_setter_add_tag_value:
+ * @setter: a #GstTagSetter
+ * @mode: the mode to use
+ * @tag: tag to set
+ * @value: GValue to set for the tag
+ *
+ * Adds the given tag / GValue pair on the setter using the given merge mode.
+ *
+ * Since: 0.10.24
+ */
+void
+gst_tag_setter_add_tag_value (GstTagSetter * setter,
+    GstTagMergeMode mode, const gchar * tag, const GValue * value)
+{
+  GstTagData *data;
+
+  g_return_if_fail (GST_IS_TAG_SETTER (setter));
+  g_return_if_fail (GST_TAG_MODE_IS_VALID (mode));
+
+  data = gst_tag_setter_get_data (setter);
+  if (!data->list)
+    data->list = gst_tag_list_new ();
+
+  gst_tag_list_add_value (data->list, mode, tag, value);
+}
+
 /**
  * gst_tag_setter_get_tag_list:
  * @setter: a #GstTagSetter
index 95d4199a41f115f5e0a43db16b75e5a0963c11a5..c7b21dfcfe64fa21bd9955932b91b1f3f1913f84 100644 (file)
@@ -83,6 +83,11 @@ void            gst_tag_setter_add_tag_valist_values(GstTagSetter *  setter,
                                                     const gchar *      tag,
                                                     va_list            var_args);
 
+void           gst_tag_setter_add_tag_value        (GstTagSetter *     setter,
+                                                    GstTagMergeMode    mode,
+                                                    const gchar *      tag,
+                                                    const GValue *     value);
+
 G_CONST_RETURN GstTagList *
                gst_tag_setter_get_tag_list          (GstTagSetter *    setter);