[gst-cvs] gstreamer: tags: API: Add functions to add single tags to GstTagList or GstTagSetter
Sebastian Dröge
slomo at kemper.freedesktop.org
Tue May 12 00:02:59 PDT 2009
Module: gstreamer
Branch: master
Commit: ad8a35ff3ec9965cfd761d2cb4408e6a7073d9b8
URL: http://cgit.freedesktop.org/gstreamer/gstreamer/commit/?id=ad8a35ff3ec9965cfd761d2cb4408e6a7073d9b8
Author: Sebastian Dröge <sebastian.droege at collabora.co.uk>
Date: Thu May 7 09:31:01 2009 +0200
tags: API: Add functions to add single tags to GstTagList or GstTagSetter
The new functions are gst_tag_setter_add_tag_value()
and gst_tag_list_add_value()). This fixes bug #581198.
---
gst/gsttaglist.c | 23 +++++++++++++++++++++++
gst/gsttaglist.h | 4 ++++
gst/gsttagsetter.c | 27 +++++++++++++++++++++++++++
gst/gsttagsetter.h | 5 +++++
4 files changed, 59 insertions(+), 0 deletions(-)
diff --git a/gst/gsttaglist.c b/gst/gsttaglist.c
index f37b1c1..01f2e5f 100644
--- a/gst/gsttaglist.c
+++ b/gst/gsttaglist.c
@@ -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
diff --git a/gst/gsttaglist.h b/gst/gsttaglist.h
index abf1eab..7be74fd 100644
--- a/gst/gsttaglist.h
+++ b/gst/gsttaglist.h
@@ -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,
diff --git a/gst/gsttagsetter.c b/gst/gsttagsetter.c
index 62d933d..487c7e8 100644
--- a/gst/gsttagsetter.c
+++ b/gst/gsttagsetter.c
@@ -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
*
diff --git a/gst/gsttagsetter.h b/gst/gsttagsetter.h
index 95d4199..c7b21df 100644
--- a/gst/gsttagsetter.h
+++ b/gst/gsttagsetter.h
@@ -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);
More information about the Gstreamer-commits
mailing list