Initialize Tizen 2.3
[framework/multimedia/gstreamer0.10.git] / mobile / tests / examples / launch / mp3parselaunch.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <gst/gst.h>
4
5 static void
6 event_loop (GstElement * pipe)
7 {
8   GstBus *bus;
9   GstMessage *message = NULL;
10   gboolean running = TRUE;
11
12   bus = gst_element_get_bus (GST_ELEMENT (pipe));
13
14   while (running) {
15     message = gst_bus_poll (bus, GST_MESSAGE_ANY, -1);
16
17     g_assert (message != NULL);
18
19     switch (message->type) {
20       case GST_MESSAGE_EOS:
21         running = FALSE;
22         break;
23       case GST_MESSAGE_WARNING:{
24         GError *gerror;
25         gchar *debug;
26
27         gst_message_parse_warning (message, &gerror, &debug);
28         gst_object_default_error (GST_MESSAGE_SRC (message), gerror, debug);
29         g_error_free (gerror);
30         g_free (debug);
31         break;
32       }
33       case GST_MESSAGE_ERROR:{
34         GError *gerror;
35         gchar *debug;
36
37         gst_message_parse_error (message, &gerror, &debug);
38         gst_object_default_error (GST_MESSAGE_SRC (message), gerror, debug);
39         g_error_free (gerror);
40         g_free (debug);
41         running = FALSE;
42         break;
43       }
44       default:
45         break;
46     }
47     gst_message_unref (message);
48   }
49   gst_object_unref (bus);
50 }
51
52 int
53 main (int argc, char *argv[])
54 {
55   GstElement *bin;
56   GstElement *filesrc;
57   GError *error = NULL;
58
59   gst_init (&argc, &argv);
60
61   if (argc != 2) {
62     g_print ("usage: %s <mp3 file>\n", argv[0]);
63     exit (-1);
64   }
65
66   bin = (GstElement *)
67       gst_parse_launch ("filesrc name=my_filesrc ! mad ! osssink", &error);
68   if (!bin) {
69     fprintf (stderr, "Parse error: %s", error->message);
70     exit (-1);
71   }
72
73   filesrc = gst_bin_get_by_name (GST_BIN (bin), "my_filesrc");
74   g_object_set (G_OBJECT (filesrc), "location", argv[1], NULL);
75
76   /* start playing */
77   gst_element_set_state (bin, GST_STATE_PLAYING);
78
79   /* Run event loop listening for bus messages until EOS or ERROR */
80   event_loop (bin);
81
82   /* stop the bin */
83   gst_element_set_state (bin, GST_STATE_NULL);
84
85   exit (0);
86 }