Commit bdcb5fec authored by Tim-Philipp Müller's avatar Tim-Philipp Müller

examples: remove xml example build system bits and purge from tree

Fixes make distcheck.
parent 00697e85
......@@ -197,6 +197,9 @@ CRUFT_FILES = \
$(top_builddir)/common/m4/wint_t.m4 \
$(top_builddir)/common/m4/xsize.m4
CRUFT_DIRS = \
$(top_builddir)/tests/examples/xml
include $(top_srcdir)/common/cruft.mak
all-local: gst-element-check-@GST_MAJORMINOR@.m4 check-cruft
......@@ -711,7 +711,6 @@ tests/examples/metadata/Makefile
tests/examples/queue/Makefile
tests/examples/streams/Makefile
tests/examples/typefind/Makefile
tests/examples/xml/Makefile
tools/Makefile
common/Makefile
common/m4/Makefile
......
createxml
runxml
xmlTest.gst
*.bb
*.bbg
*.da
createxml-createxml.gcno
runxml-runxml.gcno
noinst_PROGRAMS = createxml runxml
createxml_LDADD = $(GST_OBJ_LIBS) $(XML_LIBS)
createxml_CFLAGS = $(GST_OBJ_CFLAGS)
runxml_LDADD = $(GST_OBJ_LIBS) $(XML_LIBS)
runxml_CFLAGS = $(GST_OBJ_CFLAGS)
#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);
}
#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);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment