+++ /dev/null
-#include <stdlib.h>
-#include <gst/gst.h>
-
-static void
-object_saved (GstObject * object, xmlNodePtr parent, gpointer data)
-{
- xmlNodePtr child;
- xmlNsPtr ns;
-
- /* first see if the namespace is already known */
- ns = xmlSearchNsByHref (parent->doc, parent,
- (xmlChar *) "http://gstreamer.net/gst-test/1.0/");
- if (ns == NULL) {
- xmlNodePtr root = xmlDocGetRootElement (parent->doc);
-
- /* add namespace to root node */
- ns = xmlNewNs (root, (xmlChar *) "http://gstreamer.net/gst-test/1.0/",
- (xmlChar *) "test");
- }
- child = xmlNewChild (parent, ns, (xmlChar *) "comment", NULL);
-
- xmlNewChild (child, NULL, (xmlChar *) "text", (xmlChar *) data);
-}
-
-int
-main (int argc, char *argv[])
-{
- GstElement *filesrc, *osssink, *queue, *queue2, *decode;
- GstElement *pipeline;
- GstElement *thread, *thread2;
-
- gst_init (&argc, &argv);
-
- if (argc != 2) {
- g_print ("usage: %s <filename>\n", argv[0]);
- exit (-1);
- }
-
- /* create new threads to hold the elements */
- thread = gst_element_factory_make ("thread", "thread");
- g_assert (thread != NULL);
- thread2 = gst_element_factory_make ("thread", "thread2");
- g_assert (thread2 != NULL);
-
- /* these signals will allow us to save custom tags with the gst xml output */
- g_signal_connect (G_OBJECT (thread), "object_saved",
- G_CALLBACK (object_saved), g_strdup ("decoder thread"));
- g_signal_connect (G_OBJECT (thread2), "object_saved",
- G_CALLBACK (object_saved), g_strdup ("render thread"));
-
- /* create a new bin to hold the elements */
- pipeline = gst_pipeline_new ("pipeline");
- g_assert (pipeline != NULL);
-
- /* create a disk reader */
- filesrc = gst_element_factory_make ("filesrc", "disk_source");
- g_assert (filesrc != NULL);
- g_object_set (G_OBJECT (filesrc), "location", argv[1], NULL);
-
- queue = gst_element_factory_make ("queue", "queue");
- queue2 = gst_element_factory_make ("queue", "queue2");
-
- /* and an audio sink */
- osssink = gst_element_factory_make ("osssink", "play_audio");
- g_assert (osssink != NULL);
-
- decode = gst_element_factory_make ("mad", "decode");
- g_assert (decode != NULL);
-
- /* add objects to the main pipeline */
- gst_bin_add (GST_BIN (pipeline), filesrc);
- gst_bin_add (GST_BIN (pipeline), queue);
-
- gst_bin_add (GST_BIN (thread), decode);
- gst_bin_add (GST_BIN (thread), queue2);
-
- gst_bin_add (GST_BIN (thread2), osssink);
-
- gst_element_link_many (filesrc, queue, decode, queue2, osssink, NULL);
-
- gst_bin_add (GST_BIN (pipeline), thread);
- gst_bin_add (GST_BIN (pipeline), thread2);
-
- /* write the bin to stdout */
- gst_xml_write_file (GST_ELEMENT (pipeline), stdout);
-
- /* write the bin to a file */
- gst_xml_write_file (GST_ELEMENT (pipeline), fopen ("xmlTest.gst", "w"));
-
- exit (0);
-}
+++ /dev/null
-#include <string.h>
-#include <stdlib.h>
-#include <gst/gst.h>
-
-G_GNUC_UNUSED static void
-xml_loaded (GstXML * xml, GstObject * object, xmlNodePtr self, gpointer data)
-{
- xmlNodePtr children = self->xmlChildrenNode;
-
- while (children) {
- if (!strcmp ((const char *) children->name, "comment")) {
- xmlNodePtr nodes = children->xmlChildrenNode;
-
- while (nodes) {
- if (!strcmp ((const char *) nodes->name, "text")) {
- gchar *name = g_strdup ((gchar *) xmlNodeGetContent (nodes));
- gchar *obj_name = gst_object_get_name (object);
-
- g_print ("object %s loaded with comment '%s'\n", obj_name, name);
-
- g_free (obj_name);
- g_free (name);
- }
- nodes = nodes->next;
- }
- }
- children = children->next;
- }
-}
-
-static void
-event_loop (GstElement * pipe)
-{
- GstBus *bus;
- GstMessage *message = NULL;
-
- bus = gst_element_get_bus (GST_ELEMENT (pipe));
-
- while (TRUE) {
- message = gst_bus_poll (bus, GST_MESSAGE_ANY, -1);
-
- g_assert (message != NULL);
-
- switch (message->type) {
- case GST_MESSAGE_EOS:
- gst_message_unref (message);
- return;
- case GST_MESSAGE_WARNING:
- case GST_MESSAGE_ERROR:{
- GError *gerror;
- gchar *debug;
-
- gst_message_parse_error (message, &gerror, &debug);
- gst_object_default_error (GST_MESSAGE_SRC (message), gerror, debug);
- gst_message_unref (message);
- g_error_free (gerror);
- g_free (debug);
- return;
- }
- default:
- gst_message_unref (message);
- break;
- }
- }
-}
-
-int
-main (int argc, char *argv[])
-{
- GstXML *xml;
- GstElement *bin;
- gboolean ret;
-
- gst_init (&argc, &argv);
-
- if (argc != 2) {
- g_print ("usage: %s <xml pipeline description>\n", argv[0]);
- exit (-1);
- }
-
- xml = gst_xml_new ();
-
-/* g_signal_connect (G_OBJECT (xml), "object_loaded", */
-/* G_CALLBACK (xml_loaded), xml); */
-
- ret = gst_xml_parse_file (xml, (xmlChar *) argv[1], NULL);
- g_assert (ret == TRUE);
-
- bin = gst_xml_get_element (xml, (xmlChar *) "pipeline");
- g_assert (bin != NULL);
-
- /* start playing */
- gst_element_set_state (bin, GST_STATE_PLAYING);
-
- /* Run event loop listening for bus messages until EOS or ERROR */
- event_loop (bin);
-
- /* stop the bin */
- gst_element_set_state (bin, GST_STATE_NULL);
-
- exit (0);
-}