X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=libchimara%2Fschannel.c;h=d93101f1ef543fe082e968cd805cf14286188573;hb=35175d59d5b8cae0e5efcb6596d638bc53ab2a1c;hp=696aaa2a7351f225ea9a009e44c1d0e3741d43f4;hpb=b026b1ac697815f2bd67e11a8718478dc1d3aed6;p=projects%2Fchimara%2Fchimara.git diff --git a/libchimara/schannel.c b/libchimara/schannel.c index 696aaa2..d93101f 100644 --- a/libchimara/schannel.c +++ b/libchimara/schannel.c @@ -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); } /**