I have the following rough code trying to get a pipeline going. All the GstElement * variables are global to the file so I left those out. But every call to gst_element_factory_make works with no NULL values return.<br>I want the following:<br>
<br>uridecodebin ---> volume --> equalizer-10band --> alsasink<br><br>If I connect uridecodebin directly to the alsasink sink everything works, but when I connect the pad in on_pad_connect to volume "sink" or mixer "sink" I get an Internal Data Error. Volume and mixer sink accepts raw data, uridecodebin outputs raw data. <br>
<br>If I launch gst-launch with this chain everything works.<br><br>What am I doing wrong? <br><br>----------------------------------------------------------<br>----------------------------------------------------------<br>
static void<br>on_pad_added (GstElement *element,<br> GstPad *pad,<br> gpointer data)<br>{<br> GstPad *sinkpad;<br><br> sinkpad = gst_element_get_static_pad (mixer, "sink");<br>
if(sinkpad==NULL)<br> printf("Sink pad is null\n");<br> <br> gst_pad_link (pad, sinkpad);<br> gst_object_unref (sinkpad);<br>}<br><br>/*<br> * Set up the streaming pipleine<br> *<br> *<br> */<br>GstElement *<br>
init_streamer(void) {<br> GstElement *pipeline;<br> <br> /* create pipeline */<br> pipeline = gst_pipeline_new ("rpm streamer");<br> <br> src=gst_element_factory_make ("uridecodebin", "play");<br>
if(!src) {<br> printf("Failed to create source\n");<br> exit(0);<br> }<br> audio=gst_element_factory_make ("alsasink", "output");<br> gain=gst_element_factory_make("volume","gain");<br>
if(!gain) {<br> printf("Failed to create gain\n");<br> exit(0);<br> }<br> mixer=gst_element_factory_make("equalizer-10bands","mix");<br> if(!mixer) {<br> printf("Failed to create mixer\n");<br>
exit(0);<br> }<br> <br> ac=gst_element_factory_make("audioconvert","convert");<br> if(!ac) {<br> printf("Failed to create audioconvert\n");<br> exit(0);<br> }<br>
<br> //<br> g_object_set (G_OBJECT (gain), "volume", 1.0, NULL);<br> g_signal_connect (src, "pad-added", G_CALLBACK (on_pad_added), NULL);<br><br> //pipeline=gst_element_factory_make ("playbin", "play");<br>
gst_bin_add_many (GST_BIN (pipeline), src, mixer, audio, NULL);<br><br> return(pipeline);<br>}<br>