<html dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style id="owaParaStyle" type="text/css">
<!--
p
        {margin-top:0;
        margin-bottom:0}
-->
</style>
</head>
<body>
<div style="direction:ltr; font-family:Tahoma; color:#000000; font-size:10pt">Hi ,<br>
<br>
i want to implement the below pipeline using gstreamer API in c.<br>
<br>
<br>
&nbsp; <span style="color:rgb(255,0,0)">/* Audio has to play repeatedly */</span><br>
&nbsp;<span id="spnR" class="rwRRO" title="gstreamer-embedded@lists.freedesktop.org"></span><span style="font-weight:bold">
</span><span style="font-family:Arial">gst-launch-0.10 interleave name=i ! alsasink filesrc location=/home/saravanan/Music/1.wav ! decodebin ! audioconvert ! i.sink1 filesrc location=/home/saravanan/Music/s.wav ! decodebin ! audioconvert ! i.sink0</span><br style="font-weight:bold">
<br>
For this i have done the coding, but it is not giving error as well as not playing also. Please guide me to solve the below code issue.<br>
<br>
<br>
#include &lt;gst/gst.h&gt;<br>
<br>
gboolean bus_callback(GstBus *bus, GstMessage *msg, gpointer data)<br>
{<br>
&nbsp;&nbsp;&nbsp; GstElement *play = GST_ELEMENT(data);<br>
&nbsp;&nbsp;&nbsp; switch (GST_MESSAGE_TYPE(msg))<br>
&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp; case GST_MESSAGE_EOS:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* restart playback if at end */<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!gst_element_seek(play,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.0, GST_FORMAT_TIME, GST_SEEK_FLAG_FLUSH,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GST_SEEK_TYPE_SET,&nbsp; 2000000000, //2 seconds (in nanoseconds)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GST_SEEK_TYPE_NONE, GST_CLOCK_TIME_NONE)) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g_print(&quot;Seek failed!\n&quot;);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br>
&nbsp;&nbsp;&nbsp; default:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br>
&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp; return TRUE;<br>
}<br>
<br>
/* gst-launch-0.10 interleave name=i ! alsasink filesrc location=/home/saravanan/Music/1.wav ! decodebin ! audioconvert ! audio/x-raw-int,channels=1 ! i.sink1 filesrc location=/home/saravanan/Music/s.wav ! decodebin ! audioconvert ! audio/x-raw-int,channels=1
 ! i.sink0 */<br>
<br>
gint<br>
main (gint&nbsp;&nbsp; argc,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gchar *argv[])<br>
{<br>
&nbsp; GMainLoop&nbsp; *loop;<br>
<br>
&nbsp; GstElement *pipeline,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *filesrc_ch_1, *filesrc_ch_2,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *audioconvert_ch_1, *audioconvert_ch_2,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *decodebin_ch_1, *decodebin_ch_2,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *interleave, *alsasink;<br>
<br>
&nbsp; GstPad *pad_ch_1, *pad_ch_2;<br>
&nbsp; GstBus *bus;<br>
&nbsp; gchar *name1, *name2;<br>
&nbsp; /* init GStreamer */<br>
&nbsp; gst_init (&amp;argc, &amp;argv);<br>
&nbsp; loop = g_main_loop_new (NULL, FALSE);<br>
<br>
<br>
&nbsp; /* make sure we have a URI */<br>
&nbsp; if (argc != 3) {<br>
&nbsp;&nbsp;&nbsp; g_print (&quot;Usage: %s &lt;URI&gt;\n&quot;, argv[0]);<br>
&nbsp;&nbsp;&nbsp; return -1;<br>
&nbsp; }<br>
<br>
&nbsp; pipeline = gst_pipeline_new (&quot;pipeline0&quot;);<br>
<br>
&nbsp; g_signal_connect (pipeline, &quot;deep_notify&quot;,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; G_CALLBACK(gst_object_default_deep_notify), NULL);<br>
<br>
&nbsp; alsasink = gst_element_factory_make(&quot;alsasink&quot;, &quot;alsasink&quot;);<br>
&nbsp; g_assert (alsasink);<br>
<br>
&nbsp; /* channel 1*/<br>
&nbsp; filesrc_ch_1&nbsp; = gst_element_factory_make (&quot;filesrc&quot;, &quot;filesrcchannel1&quot;);<br>
&nbsp; g_assert (filesrc_ch_1);<br>
<br>
&nbsp; decodebin_ch_1 = gst_element_factory_make(&quot;decodebin&quot;, &quot;decodechannel1&quot;);<br>
&nbsp; g_assert (decodebin_ch_1);<br>
<br>
&nbsp; audioconvert_ch_1 = gst_element_factory_make(&quot;audioconvert&quot;, &quot;audioconvertchannle1&quot;);<br>
&nbsp; g_assert (audioconvert_ch_1);<br>
&nbsp;<br>
&nbsp; /* channel 2*/<br>
&nbsp; filesrc_ch_2&nbsp; = gst_element_factory_make (&quot;filesrc&quot;, &quot;filesrcchannel2&quot;);<br>
&nbsp; g_assert (filesrc_ch_2);<br>
<br>
&nbsp; decodebin_ch_2 = gst_element_factory_make(&quot;decodebin&quot;, &quot;decodechannel2&quot;);<br>
&nbsp; g_assert (decodebin_ch_2);<br>
<br>
&nbsp; audioconvert_ch_2 = gst_element_factory_make(&quot;audioconvert&quot;, &quot;audioconvertchannel2&quot;);<br>
&nbsp; g_assert (audioconvert_ch_2);<br>
<br>
&nbsp; interleave = gst_element_factory_make (&quot;interleave&quot;, &quot;interleave&quot;);<br>
&nbsp; g_assert (interleave);<br>
<br>
<br>
&nbsp; g_object_set (G_OBJECT (filesrc_ch_1), &quot;location&quot;, argv[1], NULL);<br>
&nbsp; g_object_set (G_OBJECT (filesrc_ch_2), &quot;location&quot;, argv[2], NULL);<br>
<br>
<br>
&nbsp; pad_ch_1 = gst_element_get_request_pad (interleave, &quot;sink%d&quot;);&nbsp;&nbsp;&nbsp; <br>
&nbsp; name1 = gst_pad_get_name (pad_ch_1);<br>
&nbsp; g_print (&quot;A new pad %s was created\n&quot;, name1);<br>
<br>
&nbsp; pad_ch_2 = gst_element_get_request_pad (interleave, &quot;sink%d&quot;);<br>
&nbsp; name2 = gst_pad_get_name (pad_ch_2);<br>
&nbsp; g_print (&quot;A new pad %s was created\n&quot;, name2);<br>
<br>
&nbsp; if (!gst_element_link (audioconvert_ch_1, decodebin_ch_1))<br>
&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g_error (&quot;Failed to link audioconvert_ch_1 and decodebin_ch_1&quot;);<br>
&nbsp; }<br>
<br>
&nbsp; if (!gst_element_link (audioconvert_ch_2, decodebin_ch_2))<br>
&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g_error (&quot;Failed to link audioconvert_ch_2 and decodebin_ch_2&quot;);<br>
&nbsp; }<br>
<br>
&nbsp; gst_bin_add_many (GST_BIN (pipeline), interleave, alsasink,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; filesrc_ch_1, decodebin_ch_1, audioconvert_ch_1,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; filesrc_ch_2, decodebin_ch_2, audioconvert_ch_2,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NULL);<br>
<br>
<br>
&nbsp; bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));<br>
&nbsp; gst_bus_add_watch (bus, bus_callback, pipeline);<br>
&nbsp; gst_object_unref (bus);<br>
<br>
&nbsp; gst_element_set_state (pipeline, GST_STATE_PLAYING);<br>
<br>
&nbsp; /* now run */<br>
&nbsp; g_main_loop_run (loop);<br>
<br>
&nbsp; /* also clean up */<br>
&nbsp; gst_element_set_state (pipeline, GST_STATE_NULL);<br>
&nbsp; gst_object_unref (GST_OBJECT (pipeline));<br>
<br>
&nbsp; return 0;<br>
}<br>
<br>
<br>
<br>
Thanks,<br>
Saravanan.<br>
&nbsp;<br>
</div>
<br>
<br>
<b>Larsen &amp; Toubro Limited <br>
<br>
www.larsentoubro.com <br>
<br>
</b>This Email may contain confidential or privileged information for the intended recipient (s) If you are not the intended recipient, please do not use or disseminate the information, notify the sender and delete it from your system.
</body>
</html>