+#include <string.h>
#include <stdlib.h>
#include <gst/gst.h>
gboolean playing;
-static void
-xml_loaded (GstXML *xml, GstObject *object, gpointer data)
+G_GNUC_UNUSED static void
+xml_loaded (GstXML * xml, GstObject * object, xmlNodePtr self, gpointer data)
{
- if (GST_IS_PAD (object)) {
- g_print ("pad loaded '%s'\n", gst_pad_get_name (GST_PAD (object)));
- }
- else if (GST_IS_ELEMENT (object)) {
- g_print ("element loaded '%s'\n", gst_element_get_name (GST_ELEMENT (object)));
+ xmlNodePtr children = self->xmlChildrenNode;
+
+ while (children) {
+ if (!strcmp (children->name, "comment")) {
+ xmlNodePtr nodes = children->xmlChildrenNode;
+
+ while (nodes) {
+ if (!strcmp (nodes->name, "text")) {
+ gchar *name = g_strdup (xmlNodeGetContent (nodes));
+
+ g_print ("object %s loaded with comment '%s'\n",
+ gst_object_get_name (object), name);
+ }
+ nodes = nodes->next;
+ }
+ }
+ children = children->next;
}
}
-int main(int argc,char *argv[])
+int
+main (int argc, char *argv[])
{
GstXML *xml;
- GstElement *bin;
+ GstElement *pipeline;
gboolean ret;
- gst_init(&argc,&argv);
+ gst_init (&argc, &argv);
xml = gst_xml_new ();
- gtk_signal_connect (GTK_OBJECT (xml), "object_loaded", xml_loaded, NULL);
+/* g_signal_connect (G_OBJECT (xml), "object_loaded", */
+/* G_CALLBACK (xml_loaded), xml); */
- ret = gst_xml_parse_file(xml, "xmlTest.gst", NULL);
- g_assert (ret == TRUE);
+ if (argc == 2)
+ ret = gst_xml_parse_file (xml, argv[1], NULL);
+ else
+ ret = gst_xml_parse_file (xml, "xmlTest.gst", NULL);
- bin = gst_xml_get_element(xml, "bin");
- g_assert (bin != NULL);
+ g_assert (ret == TRUE);
- gst_element_set_state(bin, GST_STATE_PLAYING);
+ pipeline = gst_xml_get_element (xml, "pipeline");
+ g_assert (pipeline != NULL);
- playing = TRUE;
+ gst_element_set_state (pipeline, GST_STATE_PLAYING);
- while (gst_bin_iterate(GST_BIN(bin)));
+ while (gst_bin_iterate (GST_BIN (pipeline)));
- gst_element_set_state(bin, GST_STATE_NULL);
+ gst_element_set_state (pipeline, GST_STATE_NULL);
- exit(0);
+ exit (0);
}
-