Use gst_object_unref() instead of g_object_unref()
[projects/chimara/chimara.git] / libchimara / schannel.c
index 696aaa2a7351f225ea9a009e44c1d0e3741d43f4..d93101f1ef543fe082e968cd805cf14286188573 100644 (file)
@@ -44,12 +44,19 @@ glk_schannel_create(glui32 rock)
        g_free(pipeline_name);
 
        /* Create GStreamer elements to put in the pipeline */
-       s->source = gst_element_factory_make("fakesrc", NULL);
+       s->source = gst_element_factory_make("filesrc", NULL);
        s->filter = gst_element_factory_make("identity", NULL);
-       s->sink = gst_element_factory_make("fakesink", NULL);
+       s->sink = gst_element_factory_make("autoaudiosink", NULL);
+       if(!s->source || !s->filter || !s->sink) {
+               WARNING("Could not create one or more GStreamer elements");
+               goto fail;
+       }
+               
        gst_bin_add_many(GST_BIN(s->pipeline), s->source, s->filter, s->sink, NULL);
-       if(!gst_element_link_many(s->source, s->filter, s->sink, NULL))
+       if(!gst_element_link_many(s->source, s->filter, s->sink, NULL)) {
+               WARNING("Could not link GStreamer elements");
                goto fail;
+       }
        
        return s;
 
@@ -73,6 +80,7 @@ glk_schannel_destroy(schanid_t chan)
 {
        VALID_SCHANNEL(chan, return);
 
+#ifdef GSTREAMER_SOUND
        ChimaraGlkPrivate *glk_data = g_private_get(glk_data_key);
        
        glk_data->schannel_list = g_list_delete_link(glk_data->schannel_list, chan->schannel_list);
@@ -84,10 +92,11 @@ glk_schannel_destroy(schanid_t chan)
        }
        
        if(chan->pipeline)
-               g_object_unref(chan->pipeline);
+               gst_object_unref(chan->pipeline);
        
        chan->magic = MAGIC_FREE;
        g_free(chan);
+#endif
 }
 
 /**
@@ -109,6 +118,7 @@ glk_schannel_iterate(schanid_t chan, glui32 *rockptr)
 {
        VALID_SCHANNEL_OR_NULL(chan, return NULL);
 
+#ifdef GSTREAMER_SOUND
        ChimaraGlkPrivate *glk_data = g_private_get(glk_data_key);
        GList *retnode;
        
@@ -123,6 +133,9 @@ glk_schannel_iterate(schanid_t chan, glui32 *rockptr)
                *rockptr = glk_schannel_get_rock(retval);
                
        return retval;
+#else
+       return NULL;
+#endif /* GSTREAMER_SOUND */
 }
 
 /**
@@ -166,8 +179,7 @@ glk_schannel_get_rock(schanid_t chan)
 glui32 
 glk_schannel_play(schanid_t chan, glui32 snd)
 {
-       VALID_SCHANNEL(chan, return 0);
-       return 0;
+       return glk_schannel_play_ext(chan, snd, 1, 0);
 }
 
 /**