5 /* eos will be called when the src element has an end of stream */
6 void eos(GstSrc *src, gpointer data)
8 g_print("have eos, quitting\n");
13 int main(int argc,char *argv[])
15 GstElement *disksrc, *audiosink, *queue, *queue2, *parse, *decode;
17 GstElement *thread, *thread2;
20 g_print("usage: %s <filename>\n", argv[0]);
24 gst_init(&argc,&argv);
26 /* create a new thread to hold the elements */
27 thread = gst_thread_new("thread");
28 g_assert(thread != NULL);
29 thread2 = gst_thread_new("thread2");
30 g_assert(thread2 != NULL);
32 /* create a new bin to hold the elements */
33 bin = gst_bin_new("bin");
34 g_assert(bin != NULL);
36 /* create a disk reader */
37 disksrc = gst_elementfactory_make("disksrc", "disk_source");
38 g_assert(disksrc != NULL);
39 gtk_object_set(GTK_OBJECT(disksrc),"location", argv[1],NULL);
40 gtk_signal_connect(GTK_OBJECT(disksrc),"eos",
41 GTK_SIGNAL_FUNC(eos), thread);
43 queue = gst_elementfactory_make("queue", "queue");
44 queue2 = gst_elementfactory_make("queue", "queue2");
46 /* and an audio sink */
47 audiosink = gst_elementfactory_make("audiosink", "play_audio");
48 g_assert(audiosink != NULL);
50 parse = gst_elementfactory_make("mp3parse", "parse");
51 decode = gst_elementfactory_make("mpg123", "decode");
53 /* add objects to the main bin */
54 gst_bin_add(GST_BIN(bin), disksrc);
55 gst_bin_add(GST_BIN(bin), queue);
57 gst_bin_add(GST_BIN(thread), parse);
58 gst_bin_add(GST_BIN(thread), decode);
59 gst_bin_add(GST_BIN(thread), queue2);
61 gst_bin_add(GST_BIN(thread2), audiosink);
63 gst_pad_connect(gst_element_get_pad(disksrc,"src"),
64 gst_element_get_pad(queue,"sink"));
66 gst_pad_connect(gst_element_get_pad(queue,"src"),
67 gst_element_get_pad(parse,"sink"));
68 gst_pad_connect(gst_element_get_pad(parse,"src"),
69 gst_element_get_pad(decode,"sink"));
70 gst_pad_connect(gst_element_get_pad(decode,"src"),
71 gst_element_get_pad(queue2,"sink"));
73 gst_pad_connect(gst_element_get_pad(queue2,"src"),
74 gst_element_get_pad(audiosink,"sink"));
76 gst_bin_add(GST_BIN(bin), thread);
77 gst_bin_add(GST_BIN(bin), thread2);
80 gst_element_set_state(GST_ELEMENT(bin), GST_STATE_READY);
82 gst_element_set_state(GST_ELEMENT(bin), GST_STATE_PLAYING);
87 gst_bin_iterate(GST_BIN(bin));
90 gst_element_set_state(GST_ELEMENT(bin), GST_STATE_NULL);