mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-23 02:01:12 +00:00
xml-formatter: Serialize groups metadatas
This commit is contained in:
parent
c883f98961
commit
1f1b1c8cba
3 changed files with 21 additions and 10 deletions
|
@ -1389,7 +1389,7 @@ done:
|
|||
|
||||
void
|
||||
ges_base_xml_formatter_add_group (GESBaseXmlFormatter * self,
|
||||
const gchar * id, const gchar * properties)
|
||||
const gchar * id, const gchar * properties, const gchar * metadatas)
|
||||
{
|
||||
PendingGroup *pgroup;
|
||||
GESBaseXmlFormatterPrivate *priv = _GET_PRIV (self);
|
||||
|
@ -1400,6 +1400,10 @@ ges_base_xml_formatter_add_group (GESBaseXmlFormatter * self,
|
|||
pgroup = g_slice_new0 (PendingGroup);
|
||||
pgroup->group = ges_group_new ();
|
||||
|
||||
if (metadatas)
|
||||
ges_meta_container_add_metas_from_string (GES_META_CONTAINER
|
||||
(pgroup->group), metadatas);
|
||||
|
||||
g_hash_table_insert (priv->containers, g_strdup (id),
|
||||
gst_object_ref (pgroup->group));
|
||||
priv->groups = g_list_prepend (priv->groups, pgroup);
|
||||
|
|
|
@ -291,7 +291,8 @@ G_GNUC_INTERNAL void ges_base_xml_formatter_add_source (GESBaseXmlForma
|
|||
|
||||
G_GNUC_INTERNAL void ges_base_xml_formatter_add_group (GESBaseXmlFormatter *self,
|
||||
const gchar *name,
|
||||
const gchar *properties);
|
||||
const gchar *properties,
|
||||
const gchar *metadatas);
|
||||
|
||||
G_GNUC_INTERNAL void ges_base_xml_formatter_last_group_add_child(GESBaseXmlFormatter *self,
|
||||
const gchar * id,
|
||||
|
|
|
@ -34,8 +34,8 @@
|
|||
|
||||
#define parent_class ges_xml_formatter_parent_class
|
||||
#define API_VERSION 0
|
||||
#define MINOR_VERSION 4
|
||||
#define VERSION 0.4
|
||||
#define MINOR_VERSION 5
|
||||
#define VERSION 0.5
|
||||
|
||||
#define COLLECT_STR_OPT (G_MARKUP_COLLECT_STRING | G_MARKUP_COLLECT_OPTIONAL)
|
||||
|
||||
|
@ -736,18 +736,18 @@ _parse_group (GMarkupParseContext * context, const gchar * element_name,
|
|||
const gchar ** attribute_names, const gchar ** attribute_values,
|
||||
GESXmlFormatter * self, GError ** error)
|
||||
{
|
||||
const gchar *id, *properties;
|
||||
const gchar *id, *properties, *metadatas = NULL;
|
||||
|
||||
if (!g_markup_collect_attributes (element_name, attribute_names,
|
||||
attribute_values, error,
|
||||
G_MARKUP_COLLECT_STRING, "id", &id,
|
||||
G_MARKUP_COLLECT_STRING, "properties", &properties,
|
||||
G_MARKUP_COLLECT_INVALID)) {
|
||||
COLLECT_STR_OPT, "metadatas", &metadatas, G_MARKUP_COLLECT_INVALID)) {
|
||||
return;
|
||||
}
|
||||
|
||||
ges_base_xml_formatter_add_group (GES_BASE_XML_FORMATTER (self), id,
|
||||
properties);
|
||||
properties, metadatas);
|
||||
}
|
||||
|
||||
static inline void
|
||||
|
@ -1295,7 +1295,7 @@ _save_group (GESXmlFormatter * self, GString * str, GList ** seen_groups,
|
|||
{
|
||||
GList *tmp;
|
||||
gboolean serialize;
|
||||
gchar *properties;
|
||||
gchar *properties, *metadatas;
|
||||
|
||||
g_object_get (group, "serialize", &serialize, NULL);
|
||||
if (!serialize) {
|
||||
|
@ -1320,9 +1320,15 @@ _save_group (GESXmlFormatter * self, GString * str, GList ** seen_groups,
|
|||
}
|
||||
|
||||
properties = _serialize_properties (G_OBJECT (group), NULL);
|
||||
g_string_append_printf (str, " <group id='%d' properties='%s'>\n",
|
||||
self->priv->nbelements, properties);
|
||||
|
||||
metadatas = ges_meta_container_metas_to_string (GES_META_CONTAINER (group));
|
||||
self->priv->min_version = MAX (self->priv->min_version, 5);
|
||||
|
||||
g_string_append_printf (str,
|
||||
" <group id='%d' properties='%s' metadatas='%s'>\n",
|
||||
self->priv->nbelements, properties, metadatas);
|
||||
g_free (properties);
|
||||
g_free (metadatas);
|
||||
g_hash_table_insert (self->priv->element_id, group,
|
||||
GINT_TO_POINTER (self->priv->nbelements));
|
||||
self->priv->nbelements++;
|
||||
|
|
Loading…
Reference in a new issue