A thread example.
authorWim Taymans <wim.taymans@gmail.com>
Sat, 9 Sep 2000 16:39:03 +0000 (16:39 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Sat, 9 Sep 2000 16:39:03 +0000 (16:39 +0000)
Original commit message from CVS:
A thread example.
An example of gstreamer-launch: an mp3 player

examples/launch/.gitignore [new file with mode: 0644]
examples/launch/mp3play [new file with mode: 0755]
examples/thread/.gitignore [new file with mode: 0644]
examples/thread/Makefile [new file with mode: 0644]
examples/thread/thread.c [new file with mode: 0644]
tests/old/examples/launch/.gitignore [new file with mode: 0644]
tests/old/examples/launch/mp3play [new file with mode: 0755]
tests/old/examples/thread/.gitignore [new file with mode: 0644]
tests/old/examples/thread/Makefile [new file with mode: 0644]
tests/old/examples/thread/thread.c [new file with mode: 0644]

diff --git a/examples/launch/.gitignore b/examples/launch/.gitignore
new file mode 100644 (file)
index 0000000..3eb8723
--- /dev/null
@@ -0,0 +1 @@
+mp3play
diff --git a/examples/launch/mp3play b/examples/launch/mp3play
new file mode 100755 (executable)
index 0000000..c5e8e5f
--- /dev/null
@@ -0,0 +1,2 @@
+#/usr/bin/sh
+gstreamer-launch disksrc $1 ! mp3parse ! mpg123 ! audiosink
diff --git a/examples/thread/.gitignore b/examples/thread/.gitignore
new file mode 100644 (file)
index 0000000..97ca971
--- /dev/null
@@ -0,0 +1,2 @@
+Makefile
+thread
diff --git a/examples/thread/Makefile b/examples/thread/Makefile
new file mode 100644 (file)
index 0000000..408cb6e
--- /dev/null
@@ -0,0 +1,10 @@
+
+CC = gcc
+
+thread: thread.c 
+       $(CC) -Wall `gstreamer-config --cflags --libs` thread.c -o thread 
+
+clean: 
+       rm -f *.o thread
+       
+       
diff --git a/examples/thread/thread.c b/examples/thread/thread.c
new file mode 100644 (file)
index 0000000..1635219
--- /dev/null
@@ -0,0 +1,72 @@
+#include <gst/gst.h>
+
+/* eos will be called when the src element has an end of stream */
+void eos(GstSrc *src, gpointer data) 
+{
+  GstThread *thread = GST_THREAD(data);
+  g_print("have eos, quitting\n");
+
+  /* stop the bin */
+  gst_element_set_state(GST_ELEMENT(thread), GST_STATE_NULL);
+
+  gst_main_quit();
+}
+
+int main(int argc,char *argv[]) 
+{
+  GstElement *disksrc, *audiosink;
+  GstElement *pipeline;
+  GstElement *thread;
+
+  if (argc != 2) {
+    g_print("usage: %s <filename>\n", argv[0]);
+    exit(-1);
+  }
+
+  gst_init(&argc,&argv);
+
+  /* create a new thread to hold the elements */
+  thread = gst_thread_new("thread");
+  g_assert(thread != NULL);
+
+  /* create a new bin to hold the elements */
+  pipeline = gst_pipeline_new("pipeline");
+  g_assert(pipeline != NULL);
+
+  /* create a disk reader */
+  disksrc = gst_elementfactory_make("disksrc", "disk_source");
+  g_assert(disksrc != NULL);
+  gtk_object_set(GTK_OBJECT(disksrc),"location", argv[1],NULL);
+  gtk_signal_connect(GTK_OBJECT(disksrc),"eos",
+                     GTK_SIGNAL_FUNC(eos), thread);
+
+  /* and an audio sink */
+  audiosink = gst_elementfactory_make("audiosink", "play_audio");
+  g_assert(audiosink != NULL);
+
+  /* add objects to the main pipeline */
+  gst_bin_add(GST_BIN(pipeline), disksrc);
+  gst_bin_add(GST_BIN(pipeline), audiosink);
+
+  if (!gst_pipeline_autoplug(GST_PIPELINE(pipeline))) {
+    g_print("unable to handle stream\n");
+    exit(-1);
+  }
+
+  gst_bin_remove(GST_BIN(pipeline), disksrc);
+
+  gst_bin_add(GST_BIN(thread), disksrc);
+  gst_bin_add(GST_BIN(thread), GST_ELEMENT(pipeline));
+
+  /* make it ready */
+  gst_element_set_state(GST_ELEMENT(thread), GST_STATE_READY);
+  /* start playing */
+  gst_element_set_state(GST_ELEMENT(thread), GST_STATE_PLAYING);
+
+  gst_main();
+
+  gst_pipeline_destroy(thread);
+
+  exit(0);
+}
+
diff --git a/tests/old/examples/launch/.gitignore b/tests/old/examples/launch/.gitignore
new file mode 100644 (file)
index 0000000..3eb8723
--- /dev/null
@@ -0,0 +1 @@
+mp3play
diff --git a/tests/old/examples/launch/mp3play b/tests/old/examples/launch/mp3play
new file mode 100755 (executable)
index 0000000..c5e8e5f
--- /dev/null
@@ -0,0 +1,2 @@
+#/usr/bin/sh
+gstreamer-launch disksrc $1 ! mp3parse ! mpg123 ! audiosink
diff --git a/tests/old/examples/thread/.gitignore b/tests/old/examples/thread/.gitignore
new file mode 100644 (file)
index 0000000..97ca971
--- /dev/null
@@ -0,0 +1,2 @@
+Makefile
+thread
diff --git a/tests/old/examples/thread/Makefile b/tests/old/examples/thread/Makefile
new file mode 100644 (file)
index 0000000..408cb6e
--- /dev/null
@@ -0,0 +1,10 @@
+
+CC = gcc
+
+thread: thread.c 
+       $(CC) -Wall `gstreamer-config --cflags --libs` thread.c -o thread 
+
+clean: 
+       rm -f *.o thread
+       
+       
diff --git a/tests/old/examples/thread/thread.c b/tests/old/examples/thread/thread.c
new file mode 100644 (file)
index 0000000..1635219
--- /dev/null
@@ -0,0 +1,72 @@
+#include <gst/gst.h>
+
+/* eos will be called when the src element has an end of stream */
+void eos(GstSrc *src, gpointer data) 
+{
+  GstThread *thread = GST_THREAD(data);
+  g_print("have eos, quitting\n");
+
+  /* stop the bin */
+  gst_element_set_state(GST_ELEMENT(thread), GST_STATE_NULL);
+
+  gst_main_quit();
+}
+
+int main(int argc,char *argv[]) 
+{
+  GstElement *disksrc, *audiosink;
+  GstElement *pipeline;
+  GstElement *thread;
+
+  if (argc != 2) {
+    g_print("usage: %s <filename>\n", argv[0]);
+    exit(-1);
+  }
+
+  gst_init(&argc,&argv);
+
+  /* create a new thread to hold the elements */
+  thread = gst_thread_new("thread");
+  g_assert(thread != NULL);
+
+  /* create a new bin to hold the elements */
+  pipeline = gst_pipeline_new("pipeline");
+  g_assert(pipeline != NULL);
+
+  /* create a disk reader */
+  disksrc = gst_elementfactory_make("disksrc", "disk_source");
+  g_assert(disksrc != NULL);
+  gtk_object_set(GTK_OBJECT(disksrc),"location", argv[1],NULL);
+  gtk_signal_connect(GTK_OBJECT(disksrc),"eos",
+                     GTK_SIGNAL_FUNC(eos), thread);
+
+  /* and an audio sink */
+  audiosink = gst_elementfactory_make("audiosink", "play_audio");
+  g_assert(audiosink != NULL);
+
+  /* add objects to the main pipeline */
+  gst_bin_add(GST_BIN(pipeline), disksrc);
+  gst_bin_add(GST_BIN(pipeline), audiosink);
+
+  if (!gst_pipeline_autoplug(GST_PIPELINE(pipeline))) {
+    g_print("unable to handle stream\n");
+    exit(-1);
+  }
+
+  gst_bin_remove(GST_BIN(pipeline), disksrc);
+
+  gst_bin_add(GST_BIN(thread), disksrc);
+  gst_bin_add(GST_BIN(thread), GST_ELEMENT(pipeline));
+
+  /* make it ready */
+  gst_element_set_state(GST_ELEMENT(thread), GST_STATE_READY);
+  /* start playing */
+  gst_element_set_state(GST_ELEMENT(thread), GST_STATE_PLAYING);
+
+  gst_main();
+
+  gst_pipeline_destroy(thread);
+
+  exit(0);
+}
+