trying to write a test for tee first
[platform/upstream/gstreamer.git] / tests / old / testsuite / elements / tee.c
1 /*
2  * test for tee element
3  * this tests for proxying of caps from tee sink to src's in various situations
4  * thomas@apestaart.org
5  */
6
7 #include <gst/gst.h>
8
9 GstElement *
10 element_create (char *name, char *element)
11   /*
12    * create the element
13    * print an error if it can't be created
14    * return NULL if it couldn't be created
15    * return element if it did work
16    */
17 {
18   GstElement *el = NULL;
19
20   el = (GstElement *) gst_elementfactory_make (element, name);
21   if (el == NULL)
22   {
23     fprintf (stderr, "Could not create element %s (%s) !\n", name, element);
24     return NULL;
25   }
26   else
27     return el;
28 }
29
30 int
31 main (int argc, char *argv[])
32 {
33   GstElement *pipeline = NULL;
34   GstElement *tee, *src, *sink1, *sink2;
35   GstPad *tee_src;
36
37   /* init */
38   gst_init (&argc, &argv);
39
40   /* create */
41   g_print ("Creating pipeline\n");
42   pipeline = gst_pipeline_new ("pipeline");
43   //g_assert (GST_IS_PIPELINE (pipeline));
44
45   g_print ("Creating elements\n");
46   if (!(tee = element_create ("tee", "tee"))) return 1;
47   if (!(src = element_create ("src", "fakesrc"))) return 1;
48   if (!(sink1 = element_create ("sink1", "fakesink"))) return 1;
49   if (!(sink2 = element_create ("sink2", "fakesink"))) return 1;
50
51   /* add */
52   g_print ("Adding elements to bin\n");
53   gst_bin_add (GST_BIN (pipeline), src);
54   gst_bin_add (GST_BIN (pipeline), tee);
55   
56   /* request one pad from tee */
57   tee_src = gst_element_request_pad_by_name (tee, "src%d");
58
59   /* connect */
60   gst_pad_connect (tee_src, gst_element_get_pad (sink1, "sink"));
61
62   /* set to play */
63   gst_element_set_state (pipeline, GST_STATE_PLAYING);
64   gst_bin_iterate (GST_BIN (pipeline));
65
66   g_print ("Done !\n");
67   return 0;
68 }
69