gstreamer_core/tsrc/examples/queue/src/queue.c
changeset 2 5505e8908944
child 8 4a7fac7dd34a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gstreamer_core/tsrc/examples/queue/src/queue.c	Fri Jan 22 09:59:59 2010 +0200
@@ -0,0 +1,116 @@
+
+#include <gst/gst_global.h>
+#include <stdlib.h>
+#include <gst/gst.h>
+
+/* This example uses the queue element to create a buffer between 2 elements.
+ * The scheduler automatically uses 2 threads, 1 to feed and another to consume
+ * data from the queue buffer
+ */
+
+/* Event loop to listen to events posted on the GstBus from the pipeline. Exits
+ * on EOS or ERROR events
+ */
+#define LOG_FILE "c:\\logs\\queue_logs.txt" 
+#include "std_log_result.h" 
+#define LOG_FILENAME_LINE __FILE__, __LINE__
+
+
+void create_xml(int result)
+{
+    if(result)
+        assert_failed = 1;
+    
+    testResultXml(xmlfile);
+    close_log_file();
+}
+static void
+event_loop (GstElement * pipe)
+{
+  GstBus *bus;
+  GstMessage *message = NULL;
+
+  bus = gst_element_get_bus (GST_ELEMENT (pipe));
+
+  while (TRUE) {
+    message = gst_bus_poll (bus, GST_MESSAGE_ANY, -1);
+    g_assert (message != NULL);
+
+    switch (message->type) {
+      case GST_MESSAGE_EOS:
+        gst_message_unref (message);
+        return;
+      case GST_MESSAGE_WARNING:
+      case GST_MESSAGE_ERROR:{
+        GError *gerror;
+        gchar *debug;
+
+        gst_message_parse_error (message, &gerror, &debug);
+        gst_object_default_error (GST_MESSAGE_SRC (message), gerror, debug);
+        gst_message_unref (message);
+        g_error_free (gerror);
+        g_free (debug);
+        return;
+      }
+      default:
+        gst_message_unref (message);
+        break;
+    }
+  }
+}
+
+int
+main (int argc, char *argv[])
+{
+  GstElement *filesrc, *audiosink, *decode, *queue;
+  GstElement *pipeline;
+
+	xmlfile = "queue_logs";
+  std_log(LOG_FILENAME_LINE, "Test Started queue");
+  gst_init (&argc, &argv);
+
+  if (argc != 2) {
+    g_print ("usage: %s <filename>\n", argv[0]);
+    std_log(LOG_FILENAME_LINE, "Test Failed mp3 file need to be passed as an argument");
+    create_xml(1); 
+    exit (-1);
+  }
+
+  /* create a new pipeline to hold the elements */
+  pipeline = gst_pipeline_new ("pipeline");
+  g_assert (pipeline != NULL);
+
+  /* create a disk reader */
+  filesrc = gst_element_factory_make ("filesrc", "disk_source");
+  g_assert (filesrc != NULL);
+  g_object_set (G_OBJECT (filesrc), "location", argv[1], NULL);
+
+  decode = gst_element_factory_make ("mad", "decode");
+  g_assert (decode != NULL);
+
+  queue = gst_element_factory_make ("queue", "queue");
+  g_assert (queue != NULL);
+
+  /* and an audio sink */
+  audiosink = gst_element_factory_make ("devsoundsink", "play_audio");
+  g_assert (audiosink != NULL);
+
+  /* add objects to the main pipeline */
+  gst_bin_add_many (GST_BIN (pipeline), filesrc, decode, queue, audiosink,
+      NULL);
+
+  gst_element_link_many (filesrc, decode, queue, audiosink, NULL);
+
+  /* start playing */
+  gst_element_set_state (GST_ELEMENT (pipeline), GST_STATE_PLAYING);
+
+  /* Listen for EOS */
+  event_loop (pipeline);
+
+  gst_element_set_state (GST_ELEMENT (pipeline), GST_STATE_NULL);
+
+	std_log(LOG_FILENAME_LINE, "Test Successful");
+  create_xml(0); 
+  
+  exit (0);
+}