From c8c0ac4e78763b26a86a69ff20f44d769095e508 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Mon, 21 Aug 2000 21:23:27 +0000 Subject: [PATCH] An example using autoplug. Works for mp3 files only for now. Original commit message from CVS: An example using autoplug. Works for mp3 files only for now. --- examples/helloworld2/Makefile | 10 +++ examples/helloworld2/helloworld2.c | 71 ++++++++++++++++++++ tests/old/examples/helloworld2/Makefile | 10 +++ tests/old/examples/helloworld2/helloworld2.c | 71 ++++++++++++++++++++ 4 files changed, 162 insertions(+) create mode 100644 examples/helloworld2/Makefile create mode 100644 examples/helloworld2/helloworld2.c create mode 100644 tests/old/examples/helloworld2/Makefile create mode 100644 tests/old/examples/helloworld2/helloworld2.c diff --git a/examples/helloworld2/Makefile b/examples/helloworld2/Makefile new file mode 100644 index 0000000000..937424ae1d --- /dev/null +++ b/examples/helloworld2/Makefile @@ -0,0 +1,10 @@ + +CC = gcc + +helloworld2: helloworld2.c + $(CC) -Wall `gstreamer-config --cflags` `gtk-config --cflags` helloworld2.c -o helloworld2 `gstreamer-config --libs` `gtk-config --libs` + +clean: + rm -f *.o helloworld2 + + diff --git a/examples/helloworld2/helloworld2.c b/examples/helloworld2/helloworld2.c new file mode 100644 index 0000000000..019998500c --- /dev/null +++ b/examples/helloworld2/helloworld2.c @@ -0,0 +1,71 @@ +#include + +static gboolean playing; + +/* eos will be called when the src element has an end os stream */ +void eos(GstSrc *src) +{ + g_print("have eos, quitting\n"); + + playing = FALSE; +} + +int main(int argc,char *argv[]) +{ + GstElement *disksrc, *audiosink; + GstPipeline *pipeline; + + if (argc != 2) { + g_print("usage: %s \n", argv[0]); + exit(-1); + } + + gst_init(&argc,&argv); + gst_plugin_load_all(); + g_print("\n"); + + gst_type_dump(); + + /* create a new bin to hold the elements */ + pipeline = gst_pipeline_new("pipeline"); + + /* create a disk reader */ + disksrc = gst_elementfactory_make("disksrc", "disk_source"); + gtk_object_set(GTK_OBJECT(disksrc),"location", argv[1],NULL); + gtk_signal_connect(GTK_OBJECT(disksrc),"eos", + GTK_SIGNAL_FUNC(eos),NULL); + + /* and an audio sink */ + audiosink = gst_elementfactory_make("audiosink", "play_audio"); + + /* add objects to the main pipeline */ + gst_bin_add(GST_BIN(pipeline), disksrc); + gst_bin_add(GST_BIN(pipeline), audiosink); + + if (!gst_pipeline_autoplug(pipeline)) { + g_print("unable to handle stream\n"); + exit(-1); + } + + /* find out how to handle this bin */ + gst_bin_create_plan(GST_BIN(pipeline)); + + /* make it ready */ + gst_element_set_state(GST_ELEMENT(pipeline), GST_STATE_READY); + /* start playing */ + gst_element_set_state(GST_ELEMENT(pipeline), GST_STATE_PLAYING); + + playing = TRUE; + + while (playing) { + gst_bin_iterate(GST_BIN(pipeline)); + } + + /* stop the bin */ + gst_element_set_state(GST_ELEMENT(pipeline), GST_STATE_NULL); + + gst_pipeline_destroy(pipeline); + + exit(0); +} + diff --git a/tests/old/examples/helloworld2/Makefile b/tests/old/examples/helloworld2/Makefile new file mode 100644 index 0000000000..937424ae1d --- /dev/null +++ b/tests/old/examples/helloworld2/Makefile @@ -0,0 +1,10 @@ + +CC = gcc + +helloworld2: helloworld2.c + $(CC) -Wall `gstreamer-config --cflags` `gtk-config --cflags` helloworld2.c -o helloworld2 `gstreamer-config --libs` `gtk-config --libs` + +clean: + rm -f *.o helloworld2 + + diff --git a/tests/old/examples/helloworld2/helloworld2.c b/tests/old/examples/helloworld2/helloworld2.c new file mode 100644 index 0000000000..019998500c --- /dev/null +++ b/tests/old/examples/helloworld2/helloworld2.c @@ -0,0 +1,71 @@ +#include + +static gboolean playing; + +/* eos will be called when the src element has an end os stream */ +void eos(GstSrc *src) +{ + g_print("have eos, quitting\n"); + + playing = FALSE; +} + +int main(int argc,char *argv[]) +{ + GstElement *disksrc, *audiosink; + GstPipeline *pipeline; + + if (argc != 2) { + g_print("usage: %s \n", argv[0]); + exit(-1); + } + + gst_init(&argc,&argv); + gst_plugin_load_all(); + g_print("\n"); + + gst_type_dump(); + + /* create a new bin to hold the elements */ + pipeline = gst_pipeline_new("pipeline"); + + /* create a disk reader */ + disksrc = gst_elementfactory_make("disksrc", "disk_source"); + gtk_object_set(GTK_OBJECT(disksrc),"location", argv[1],NULL); + gtk_signal_connect(GTK_OBJECT(disksrc),"eos", + GTK_SIGNAL_FUNC(eos),NULL); + + /* and an audio sink */ + audiosink = gst_elementfactory_make("audiosink", "play_audio"); + + /* add objects to the main pipeline */ + gst_bin_add(GST_BIN(pipeline), disksrc); + gst_bin_add(GST_BIN(pipeline), audiosink); + + if (!gst_pipeline_autoplug(pipeline)) { + g_print("unable to handle stream\n"); + exit(-1); + } + + /* find out how to handle this bin */ + gst_bin_create_plan(GST_BIN(pipeline)); + + /* make it ready */ + gst_element_set_state(GST_ELEMENT(pipeline), GST_STATE_READY); + /* start playing */ + gst_element_set_state(GST_ELEMENT(pipeline), GST_STATE_PLAYING); + + playing = TRUE; + + while (playing) { + gst_bin_iterate(GST_BIN(pipeline)); + } + + /* stop the bin */ + gst_element_set_state(GST_ELEMENT(pipeline), GST_STATE_NULL); + + gst_pipeline_destroy(pipeline); + + exit(0); +} +