gstreamer_core/tsrc/examples/helloworld/src/helloworld.c
changeset 0 0e761a78d257
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gstreamer_core/tsrc/examples/helloworld/src/helloworld.c	Thu Dec 17 08:53:32 2009 +0200
@@ -0,0 +1,149 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#include <gst/gst_global.h>
+#include <stdlib.h>
+#include <gst/gst.h>
+
+
+#define LOG_FILE "c:\\logs\\hello_world_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 *bin, *filesrc, *decoder, *audiosink;
+  GstElement *conv, *resample;
+	xmlfile = "helloworld_logs";
+  std_log(LOG_FILENAME_LINE, "Test Started hellowworld");
+  
+  gst_init (&argc, &argv);
+ 
+  if (argc != 2) {
+    g_print ("usage: %s <mp3 file>\n", argv[0]);
+    std_log(LOG_FILENAME_LINE, "Test Failed argument need to be passed");
+    create_xml(1); 
+    exit (-1);
+  }
+
+  /* create a new bin to hold the elements */
+  bin = gst_pipeline_new ("pipeline");
+  g_assert (bin);
+
+  /* create a disk reader */
+  filesrc = gst_element_factory_make ("filesrc", "disk_source");
+  g_assert (filesrc);
+  g_object_set (G_OBJECT (filesrc), "location", argv[1], NULL);
+
+  /* now it's time to get the decoder */
+  decoder = gst_element_factory_make ("mad", "decode");
+  if (!decoder) {
+    std_log(LOG_FILENAME_LINE, "could not find plugin mad");
+    g_print ("could not find plugin \"mad\"");
+    return -1;
+  }
+
+  /* also, we need to add some converters to make sure the audio stream
+   * from the decoder is converted into a format the audio sink can
+   * understand (if necessary) */
+  conv = gst_element_factory_make ("audioconvert", "audioconvert");
+  if (!conv) {
+    std_log(LOG_FILENAME_LINE, "could not create \"audioconvert\" element!");
+    g_print ("could not create \"audioconvert\" element!");
+    return -1;
+  }
+  resample = gst_element_factory_make ("audioresample", "audioresample");
+  if (!conv) {
+    std_log(LOG_FILENAME_LINE, "could not create \"audioresample\" element!");
+    g_print ("could not create \"audioresample\" element!");
+    return -1;
+  }
+
+  /* and an audio sink */
+  audiosink = gst_element_factory_make ("devsoundsink", "play_audio");
+  g_assert (audiosink);
+
+  /* add objects to the main pipeline */
+  gst_bin_add_many (GST_BIN (bin), filesrc, decoder, conv,
+      resample, audiosink, NULL);
+
+  /* link the elements */
+  gst_element_link_many (filesrc, decoder, conv, resample, audiosink, NULL);
+
+  /* start playing */
+  std_log(LOG_FILENAME_LINE, "START PLAYING");
+  gst_element_set_state (bin, GST_STATE_PLAYING);
+  std_log(LOG_FILENAME_LINE, "STOP PLAYING ");
+  /* Run event loop listening for bus messages until EOS or ERROR */
+  event_loop (bin);
+
+  /* stop the bin */
+  std_log(LOG_FILENAME_LINE, "START BIN");
+  gst_element_set_state (bin, GST_STATE_NULL);
+  std_log(LOG_FILENAME_LINE, "START BIN");
+
+	std_log(LOG_FILENAME_LINE, "Test Successful");
+  create_xml(0); 
+  exit (0);
+}