Fix saving/restoring caps and structures

Original commit message from CVS:
Fix saving/restoring caps and structures
This commit is contained in:
David Schleef 2003-11-25 08:57:57 +00:00
parent a53fe6571b
commit b9e3755c14
2 changed files with 10 additions and 15 deletions

View file

@ -860,14 +860,11 @@ gst_xml_registry_parse_padtemplate (GMarkupParseContext *context, const gchar *t
}
static gboolean
gst_xml_registry_parse_capscomp (GMarkupParseContext *context, const gchar *tag, const gchar *text,
gst_xml_registry_parse_structure (GMarkupParseContext *context, const gchar *tag, const gchar *text,
gsize text_len, GstXMLRegistry *registry, GError **error)
{
if (!strcmp (tag, "name")) {
registry->caps_name = g_strndup (text, text_len);
}
else if (!strcmp (tag, "type")) {
registry->caps_mime = g_strndup (text, text_len);
registry->structure_name = g_strndup (text, text_len);
}
return TRUE;
}
@ -977,9 +974,9 @@ gst_xml_registry_start_element (GMarkupParseContext *context,
}
break;
case GST_XML_REGISTRY_CAPS:
if (!strncmp (element_name, "capscomp", 8)) {
xmlregistry->state = GST_XML_REGISTRY_CAPSCOMP;
xmlregistry->parser = gst_xml_registry_parse_capscomp;
if (!strncmp (element_name, "structure", 9)) {
xmlregistry->state = GST_XML_REGISTRY_STRUCTURE;
xmlregistry->parser = gst_xml_registry_parse_structure;
}
break;
#if 0
@ -1153,6 +1150,7 @@ gst_xml_registry_end_element (GMarkupParseContext *context,
xmlregistry->parser = gst_xml_registry_parse_padtemplate;
}
break;
#if 0
case GST_XML_REGISTRY_CAPSCOMP:
if (!strcmp (element_name, "capscomp")) {
GstCaps2 *caps;
@ -1168,7 +1166,6 @@ gst_xml_registry_end_element (GMarkupParseContext *context,
xmlregistry->caps = caps;
}
break;
#if 0
case GST_XML_REGISTRY_PROPERTIES:
if (!strncmp (element_name, "list", 4)) {
GstPropsEntry *entry;
@ -1436,7 +1433,6 @@ gst_xml_registry_save_structure (GstXMLRegistry *xmlregistry, const GstStructure
static gboolean
gst_xml_registry_save_caps (GstXMLRegistry *xmlregistry, const GstCaps2 *caps)
{
CLASS (xmlregistry)->save_func (xmlregistry, "<capscomp>\n");
if(gst_caps2_is_any(caps)){
PUT_ESCAPED ("flags", "any");
} else {
@ -1447,7 +1443,6 @@ gst_xml_registry_save_caps (GstXMLRegistry *xmlregistry, const GstCaps2 *caps)
gst_xml_registry_save_structure (xmlregistry, structure);
}
}
CLASS (xmlregistry)->save_func (xmlregistry, "</capscomp>\n");
return TRUE;
}
@ -1517,12 +1512,11 @@ gst_xml_registry_save_feature (GstXMLRegistry *xmlregistry, GstPluginFeature *fe
else if (GST_IS_TYPE_FIND_FACTORY (feature)) {
GstTypeFindFactory *factory = GST_TYPE_FIND_FACTORY (feature);
gint i = 0;
/* FIXME
if (factory->caps) {
CLASS (xmlregistry)->save_func (xmlregistry, "<caps>\n");
gst_xml_registry_save_caps (xmlregistry, factory->caps);
CLASS (xmlregistry)->save_func (xmlregistry, "</caps>\n");
} */
}
if (factory->extensions) {
while (factory->extensions[i]) {
PUT_ESCAPED ("extension", factory->extensions[i]);

View file

@ -52,7 +52,7 @@ typedef enum {
GST_XML_REGISTRY_FEATURE,
GST_XML_REGISTRY_PADTEMPLATE,
GST_XML_REGISTRY_CAPS,
GST_XML_REGISTRY_CAPSCOMP,
GST_XML_REGISTRY_STRUCTURE,
GST_XML_REGISTRY_PROPERTIES
} GstXMLRegistryState;
@ -103,7 +103,8 @@ struct _GstXMLRegistry {
GstCaps2 *caps;
gchar *caps_name;
gchar *caps_mime;
gchar *structure_name;
//gchar *caps_mime;
//GstProps *props;
gboolean in_list;