Commit 606c53fc authored by Tim-Philipp Müller's avatar Tim-Philipp Müller

taglist: add to_string and new_from_string functions

We want to make GstTagList opaque and not have people use
GstStructure API on it.

API: gst_tag_list_to_string()
API: gst_tag_list_new_from_string()
parent 911c078c
......@@ -2366,6 +2366,8 @@ gst_tag_is_fixed
gst_tag_list_new
gst_tag_list_new_full
gst_tag_list_new_full_valist
gst_tag_list_new_from_string
gst_tag_list_to_string
gst_is_tag_list
gst_tag_list_is_empty
gst_tag_list_is_equal
......
......@@ -697,6 +697,44 @@ gst_tag_list_new_full_valist (va_list var_args)
return list;
}
/**
* gst_tag_list_to_string:
* @list: a #GstTagList
*
* Serializes a tag list to a string.
*
* Returns: a newly-allocated string, or NULL in case of an error. The
* string must be freed with g_free() when no longer needed.
*
* Since: 0.10.36
*/
gchar *
gst_tag_list_to_string (const GstTagList * list)
{
g_return_val_if_fail (GST_IS_TAG_LIST (list), NULL);
return gst_structure_to_string (GST_STRUCTURE (list));
}
/**
* gst_tag_list_new_from_string:
* @str: a string created with gst_tag_list_to_string()
*
* Deserializes a tag list.
*
* Returns: a new #GstTagList, or NULL in case of an error.
*
* Since: 0.10.36
*/
GstTagList *
gst_tag_list_new_from_string (const gchar * str)
{
g_return_val_if_fail (str != NULL, NULL);
g_return_val_if_fail (g_str_has_prefix (str, "taglist"), NULL);
return GST_TAG_LIST (gst_structure_from_string (str, NULL));
}
/**
* gst_tag_list_is_empty:
* @list: A #GstTagList.
......
......@@ -215,6 +215,9 @@ GstTagList * gst_tag_list_new (void);
GstTagList * gst_tag_list_new_full (const gchar * tag, ...);
GstTagList * gst_tag_list_new_full_valist (va_list var_args);
gchar * gst_tag_list_to_string (const GstTagList * list);
GstTagList * gst_tag_list_new_from_string (const gchar * str);
gboolean gst_is_tag_list (gconstpointer p);
GstTagList * gst_tag_list_copy (const GstTagList * list);
gboolean gst_tag_list_is_empty (const GstTagList * list);
......
......@@ -274,11 +274,11 @@ GST_START_TEST (test_date_tags)
tag_list = gst_tag_list_new ();
gst_tag_list_add (tag_list, GST_TAG_MERGE_APPEND, GST_TAG_DATE, date, NULL);
str = gst_structure_to_string (tag_list);
str = gst_tag_list_to_string (tag_list);
fail_if (str == NULL);
fail_if (strstr (str, "2005-10-14") == NULL);
tag_list2 = gst_structure_from_string (str, NULL);
tag_list2 = gst_tag_list_new_from_string (str);
fail_if (tag_list2 == NULL);
fail_if (!gst_tag_list_get_date (tag_list2, GST_TAG_DATE, &date2));
fail_unless (gst_tag_list_is_equal (tag_list2, tag_list));
......
......@@ -1086,10 +1086,12 @@ EXPORTS
gst_tag_list_is_equal
gst_tag_list_merge
gst_tag_list_new
gst_tag_list_new_from_string
gst_tag_list_new_full
gst_tag_list_new_full_valist
gst_tag_list_peek_string_index
gst_tag_list_remove_tag
gst_tag_list_to_string
gst_tag_merge_mode_get_type
gst_tag_merge_strings_with_comma
gst_tag_merge_use_first
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment