+#include <string.h>
#include <stdlib.h>
#include <gst/gst.h>
gboolean playing;
-/* eos will be called when the src element has an end of stream */
-void eos(GstElement *element, gpointer data)
+G_GNUC_UNUSED static void
+xml_loaded (GstXML * xml, GstObject * object, xmlNodePtr self, gpointer data)
{
- g_print("have eos, quitting\n");
-
- playing = FALSE;
+ 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 *disk;
+ GstElement *pipeline;
+ gboolean ret;
- gst_init(&argc,&argv);
+ gst_init (&argc, &argv);
- xml = gst_xml_new("xmlTest.gst", NULL);
+ xml = gst_xml_new ();
- bin = gst_xml_get_element(xml, "bin");
-
- gst_element_set_state(bin, GST_STATE_PLAYING);
+/* g_signal_connect (G_OBJECT (xml), "object_loaded", */
+/* G_CALLBACK (xml_loaded), xml); */
- playing = TRUE;
+ if (argc == 2)
+ ret = gst_xml_parse_file (xml, argv[1], NULL);
+ else
+ ret = gst_xml_parse_file (xml, "xmlTest.gst", NULL);
- while (playing) {
- gst_bin_iterate(GST_BIN(bin));
- }
+ g_assert (ret == TRUE);
- gst_element_set_state(bin, GST_STATE_NULL);
+ pipeline = gst_xml_get_element (xml, "pipeline");
+ g_assert (pipeline != NULL);
- exit(0);
-}
+ gst_element_set_state (pipeline, GST_STATE_PLAYING);
+ while (gst_bin_iterate (GST_BIN (pipeline)));
+
+ gst_element_set_state (pipeline, GST_STATE_NULL);
+
+ exit (0);
+}