-GstElement* init(GMainLoop *loop, gint* sval, GCond* cond, GMutex* mutex, GstElement** source)
-{
- GstElement *pipeline = gst_pipeline_new("dart-sounds");
- *source = gst_element_factory_make("filesrc", "source");
- GstElement *demuxer = gst_element_factory_make("oggdemux", "demuxer");
- GstElement *decoder = gst_element_factory_make("vorbisdec", "decoder");
- GstElement *conv = gst_element_factory_make("audioconvert", "converter");
- GstElement *sink = gst_element_factory_make("autoaudiosink", "sink");
-
- if (!pipeline || !(*source) || !demuxer || !decoder || !conv || !sink) {
- g_printerr("One element could not be created. Exiting.\n");
- return NULL;
- }
-
- GstBus *bus = gst_pipeline_get_bus(GST_PIPELINE (pipeline));
- struct bus_call_param* data = malloc(sizeof(struct bus_call_param));
- if(!data) {
- g_printerr("Memory error\n");
- return NULL;
- }
- data->loop = loop;
- data->sval = sval;
- data->cond = cond;
- data->mutex = mutex;
- gst_bus_add_watch(bus, bus_call, data);
- gst_object_unref(bus);
-
- gst_bin_add_many(GST_BIN(pipeline), *source, demuxer, decoder, conv, sink, NULL);
-
- gst_element_link(*source, demuxer);
- gst_element_link_many(decoder, conv, sink, NULL);
- g_signal_connect(demuxer, "pad-added", G_CALLBACK(on_pad_added), decoder);
-
- return pipeline;
-}
-