<div dir="ltr">Hi Everyone,<br><br>I have two streaming pipelines and one rendering pipeline.<br><br>First Streaming pipeline: (live source)<br>    uridecodebin uri=<StreamingURL> ! audioconvert ! audio/x-raw,format=S16LE,layout=interleaved,rate=48000 ! appsink name=sink1<br>    <br>    g_signal_connect(g_sink1, "new-sample", G_CALLBACK(&onNewSampleFromSink), (gpointer)1);<br>    <br>Second Streaming one (beep sound) from audiotestsrc: <br>    audiotestsrc is-live=true ! audioconvert ! audio/x-raw,format=S16LE,layout=interleaved,rate=48000 ! appsink name=sink2<br>    <br>    g_signal_connect(g_sink2, "new-sample", G_CALLBACK(&onNewSampleFromSink), (gpointer)2);<br>    <br>Rendering pipeline<br>    appsrc name=renderPipelineSource ! queue ! pulsesink or  appsrc ! queue ! pulsesink name=renderPipelineSink<br><br>    <br>With some user input i can control the appsink Callbacks and I decide which data to push to the rendering pipeline. (g_selectedSource = 1)<br><br>GstFlowReturn onNewSampleFromSink(GstElement* const element, gpointer userData)<br>{<br>    long val = (long)userData;<br>    GstSample* sample = gst_app_sink_pull_sample((GstAppSink*)element);<br>    if(g_selectedSource == val)<br>    {<br>        GstSample* copy = gst_sample_copy(sample);<br>        gst_app_src_push_sample((GstAppSrc*)data.renderPipelineSource, copy);<br>        gst_sample_unref(copy);<br>    }<br>    gst_sample_unref(sample);<br>    return GST_FLOW_OK;<br>}<br><br><br>For instance<br>    data from First Streaming pipeline are pushed to appsrc of rendering pipeline (live audio)<br>    data from Second streaming pipeline are not sent to the rendering pipeline. <br> <br>After some time I wanted to change the source from first to second. (g_selectedSource = 2)<br>    After changing <br>        data from Second Streaming pipeline are pushed to appsrc of rendering pipeline (Beep sound)<br>        data from First streaming pipeline are not sent to the rendering pipeline.<br><br>The problem:<br>Even after i Change the source to beep sound, I hear the live audio for even 4 to 5 seconds.<br>I tried<br><br>1. gst_element_seek(renderPipeline, 1.0, GST_FORMAT_TIME, GST_SEEK_FLAG_FLUSH, GST_SEEK_TYPE_SET, 0, GST_SEEK_TYPE_NONE, GST_CLOCK_TIME_NONE);<br><br>2. gst_element_send_event(data.renderPipelineSource, gst_event_new_flush_start());<br>   gst_element_send_event(data.renderPipelineSource, gst_event_new_flush_stop(TRUE));<br>   <br>3.  GstPad *sink_pad = gst_element_get_static_pad(data.renderPipelineSink, "sink");<br>    GstEvent *flush_start_event = gst_event_new_flush_start();<br>    GstEvent *flush_stop_event = gst_event_new_flush_stop(TRUE);<br><br>    /* Send flush-start event */<br>    gst_pad_push_event(sink_pad, flush_start_event);<br>    gst_pad_send_event(sink_pad, flush_start_event);<br><br>    /* Wait for the pipeline to handle the flush-start event */<br>    gst_element_get_state(data.renderPipeline, NULL, NULL, GST_CLOCK_TIME_NONE);<br><br>    /* Send flush-stop event */<br>    gst_pad_push_event(sink_pad, flush_stop_event);<br>    gst_pad_send_event(sink_pad, flush_stop_event);<br><br>    gst_object_unref(sink_pad);<br>    <br>4.  gst_element_set_state(data.renderPipeline, GST_STATE_PAUSED);<br>    gst_element_get_state(data.renderPipeline, NULL, NULL, GST_CLOCK_TIME_NONE);<br>    gst_element_set_state(data.renderPipeline, GST_STATE_PLAYING);<br>    <br>5. Setting properties of the src, queue and pulsesink of rendering pipeline<br>    g_object_set(G_OBJECT(data.renderPipelineSource), "max-bytes", 1024, NULL);  // Set the maximum number of bytes<br>    g_object_set(G_OBJECT(data.renderPipelineSource), "max-time", 500000000, NULL); <br>  <br>    g_object_set(G_OBJECT(data.renderPipelineQueue), "max-size-bytes", 1024, NULL);  // Set the maximum number of bytes<br>    g_object_set(G_OBJECT(data.renderPipelineQueue), "max-size-time", 500000000, NULL); <br>    <br>    g_object_set(G_OBJECT(data.renderPipelineSink), "blocksize", 1024, NULL);  // Set the maximum number of bytes<br>    g_object_set(G_OBJECT(data.renderPipelineSink), "can-activate-pull", TRUE, NULL);  // Set the maximum number of bytes<br>   <br>None of the above methods helped. I do not want to set the renderPipeline to NULL then set it to Play state for internal reasons. <br>Any helping leads are appreciated. Thanks in advance.<br>Regards,<br>Prakash <br></div>