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 f37b1c1..01f2e5f 100644 (file)
@@ -896,6 +896,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
  * @tag: tag to remove
index abf1eab..7be74fd 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 62d933d..487c7e8 100644 (file)
@@ -301,6 +301,33 @@ gst_tag_setter_add_tag_valist_values (GstTagSetter * setter,
 }
 
 /**
+ * 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 95d4199..c7b21df 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);