a562306d300ae053226a59c49ac2579f53afdd73
[platform/upstream/gstreamer.git] / tests / old / examples / typefind / typefind.c
1 #include <gst/gst.h>
2
3 void
4 type_found (GstElement *typefind, const GstCaps * caps) 
5 {
6   xmlDocPtr doc;
7   xmlNodePtr parent;
8   
9   doc = xmlNewDoc ("1.0");  
10   doc->xmlRootNode = xmlNewDocNode (doc, NULL, "Capabilities", NULL);
11
12   parent = xmlNewChild (doc->xmlRootNode, NULL, "Caps1", NULL);
13   /* FIXME */
14   //gst_caps_save_thyself (caps, parent);
15
16   xmlDocDump (stdout, doc);
17 }
18
19 int 
20 main(int argc, char *argv[]) 
21 {
22   GstElement *bin, *filesrc, *typefind;
23
24   gst_init(&argc,&argv);
25
26   if (argc != 2) {
27     g_print("usage: %s <filename>\n", argv[0]);
28     exit(-1);
29   }
30
31   /* create a new bin to hold the elements */
32   bin = gst_pipeline_new("bin");
33   g_assert(bin != NULL);
34
35   /* create a file reader */
36   filesrc = gst_element_factory_make("filesrc", "file_source");
37   g_assert(filesrc != NULL);
38   g_object_set(G_OBJECT(filesrc),"location", argv[1],NULL);
39
40   typefind = gst_element_factory_make("typefind", "typefind");
41   g_assert(typefind != NULL);
42
43   /* add objects to the main pipeline */
44   gst_bin_add(GST_BIN(bin), filesrc);
45   gst_bin_add(GST_BIN(bin), typefind);
46
47   g_signal_connect (G_OBJECT (typefind), "have_type", 
48                     G_CALLBACK (type_found), NULL);
49
50   gst_element_link (filesrc, typefind);
51
52   /* start playing */
53   gst_element_set_state(GST_ELEMENT(bin), GST_STATE_PLAYING);
54
55   gst_bin_iterate(GST_BIN(bin));
56
57   gst_element_set_state(GST_ELEMENT(bin), GST_STATE_NULL);
58
59   exit(0);
60 }
61