mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-27 09:38:17 +00:00
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()
This commit is contained in:
parent
911c078c2b
commit
606c53fc94
5 changed files with 47 additions and 2 deletions
|
@ -2366,6 +2366,8 @@ gst_tag_is_fixed
|
||||||
gst_tag_list_new
|
gst_tag_list_new
|
||||||
gst_tag_list_new_full
|
gst_tag_list_new_full
|
||||||
gst_tag_list_new_full_valist
|
gst_tag_list_new_full_valist
|
||||||
|
gst_tag_list_new_from_string
|
||||||
|
gst_tag_list_to_string
|
||||||
gst_is_tag_list
|
gst_is_tag_list
|
||||||
gst_tag_list_is_empty
|
gst_tag_list_is_empty
|
||||||
gst_tag_list_is_equal
|
gst_tag_list_is_equal
|
||||||
|
|
|
@ -697,6 +697,44 @@ gst_tag_list_new_full_valist (va_list var_args)
|
||||||
return list;
|
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:
|
* gst_tag_list_is_empty:
|
||||||
* @list: A #GstTagList.
|
* @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 (const gchar * tag, ...);
|
||||||
GstTagList * gst_tag_list_new_full_valist (va_list var_args);
|
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);
|
gboolean gst_is_tag_list (gconstpointer p);
|
||||||
GstTagList * gst_tag_list_copy (const GstTagList * list);
|
GstTagList * gst_tag_list_copy (const GstTagList * list);
|
||||||
gboolean gst_tag_list_is_empty (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 ();
|
tag_list = gst_tag_list_new ();
|
||||||
gst_tag_list_add (tag_list, GST_TAG_MERGE_APPEND, GST_TAG_DATE, date, NULL);
|
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 (str == NULL);
|
||||||
fail_if (strstr (str, "2005-10-14") == 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 (tag_list2 == NULL);
|
||||||
fail_if (!gst_tag_list_get_date (tag_list2, GST_TAG_DATE, &date2));
|
fail_if (!gst_tag_list_get_date (tag_list2, GST_TAG_DATE, &date2));
|
||||||
fail_unless (gst_tag_list_is_equal (tag_list2, tag_list));
|
fail_unless (gst_tag_list_is_equal (tag_list2, tag_list));
|
||||||
|
|
|
@ -1086,10 +1086,12 @@ EXPORTS
|
||||||
gst_tag_list_is_equal
|
gst_tag_list_is_equal
|
||||||
gst_tag_list_merge
|
gst_tag_list_merge
|
||||||
gst_tag_list_new
|
gst_tag_list_new
|
||||||
|
gst_tag_list_new_from_string
|
||||||
gst_tag_list_new_full
|
gst_tag_list_new_full
|
||||||
gst_tag_list_new_full_valist
|
gst_tag_list_new_full_valist
|
||||||
gst_tag_list_peek_string_index
|
gst_tag_list_peek_string_index
|
||||||
gst_tag_list_remove_tag
|
gst_tag_list_remove_tag
|
||||||
|
gst_tag_list_to_string
|
||||||
gst_tag_merge_mode_get_type
|
gst_tag_merge_mode_get_type
|
||||||
gst_tag_merge_strings_with_comma
|
gst_tag_merge_strings_with_comma
|
||||||
gst_tag_merge_use_first
|
gst_tag_merge_use_first
|
||||||
|
|
Loading…
Reference in a new issue