<html><head></head><body><div style="color:#000; background-color:#fff; font-family:Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:13px"><div id="yiv5515098954"><div id="yui_3_16_0_ym19_1_1505231629184_11065"><div id="yui_3_16_0_ym19_1_1505231629184_11064" style="color:#000;background-color:#fff;font-family:Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:13px;"><div id="yiv5515098954yui_3_16_0_ym19_1_1505231629184_8770"><span></span></div> <div id="yui_3_16_0_ym19_1_1505231629184_11063" class="yiv5515098954qtdSeparateBR"><div id="yui_3_16_0_ym19_1_1505231629184_11267">Hello,</div><div id="yui_3_16_0_ym19_1_1505231629184_11285">Sorry for cross-posting, I wrote too much earlier...</div><div id="yui_3_16_0_ym19_1_1505231629184_11286"><br></div><div id="yui_3_16_0_ym19_1_1505231629184_11287">In fact it worked one time, and no more.<br></div><div id="yui_3_16_0_ym19_1_1505231629184_11341">So this is not a solution.</div><div id="yui_3_16_0_ym19_1_1505231629184_11321"><br></div><div id="yui_3_16_0_ym19_1_1505231629184_11336">Regards,</div><div id="yui_3_16_0_ym19_1_1505231629184_11337">Simon<br></div><br clear="none"></div><div class="yiv5515098954yqt5545966371" id="yiv5515098954yqt44490"></div></div></div></div><div class=".yiv5515098954yahoo_quoted"> <div style="font-family:Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:13px;"> <div style="font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:16px;"> <div dir="ltr"><font face="Arial" size="2"> El Martes 12 de septiembre de 2017 17:49, simo zz <simon.zz@yahoo.com> escribió:<br clear="none"></font></div>  <br clear="none"><br clear="none"> <div class="yiv5515098954y_msg_container"><div id="yiv5515098954"><div><div style="color:#000;background-color:#fff;font-family:Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:13px;"><div id="yiv5515098954yui_3_16_0_ym19_1_1505231629184_2809"><span>Hello.</span></div><div><span>Solved.</span></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505231629184_2829"><br clear="none">Setting the option <span id="yiv5515098954yui_3_16_0_ym19_1_1505231629184_2842">"<b id="yiv5515098954yui_3_16_0_ym19_1_1505231629184_2852">flush-on-eos</b>" for each queue and configuring the pipeline with:</span><br clear="none"><span></span></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505231629184_2827"><b><span id="yiv5515098954yui_3_16_0_ym19_1_1505231629184_2826"><br clear="none"></span></b></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505231629184_2886"><span id="yiv5515098954yui_3_16_0_ym19_1_1505231629184_2826"><b id="yiv5515098954yui_3_16_0_ym19_1_1505231629184_2887">gst_app_sink_set_drop(GST_APP_SINK(gstData->appsink), true);<br id="yiv5515098954yui_3_16_0_ym19_1_1505231629184_2825" clear="none">gst_app_sink_set_max_buffers(GST_APP_SINK(gstData->appsink), 1);</b></span></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505231629184_2888"><br clear="none"><span id="yiv5515098954yui_3_16_0_ym19_1_1505231629184_2826"></span></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505231629184_2910"><span id="yiv5515098954yui_3_16_0_ym19_1_1505231629184_2826">do the trick.</span></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505231629184_2911"><span id="yiv5515098954yui_3_16_0_ym19_1_1505231629184_2826">Regards,</span></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505231629184_2912"><span id="yiv5515098954yui_3_16_0_ym19_1_1505231629184_2826">Simon</span></div> <div class="yiv5515098954qtdSeparateBR"><br clear="none"><br clear="none"></div><div class="yiv5515098954yqt2306807468" id="yiv5515098954yqt59739"><div class="yiv5515098954yahoo_quoted" style="display:block;"> <div style="font-family:Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:13px;"> <div style="font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:16px;"> <div dir="ltr"><font face="Arial" size="2"> El Martes 12 de septiembre de 2017 17:31, simo zz <simon.zz@yahoo.com> escribió:<br clear="none"></font></div>  <br clear="none"><br clear="none"> <div class="yiv5515098954y_msg_container"><div id="yiv5515098954"><div><div style="color:#000;background-color:#fff;font-family:Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:13px;"><div id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_4846">Hello,</div><div id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_4851"><br clear="none"></div><div id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5735">I am developing a C program which uses the following pipeline</div><div id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_4889"><br clear="none"></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_4897"><b id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_4896">v4l2src device=/dev/webcam ! videoconvert ! video/x-raw,width=544,height=288 ! tee name=t ! queue ! v4l2h264enc ! h264parse ! mp4mux ! filesink location=/path/to/video.mp4 t. ! queue ! appsink</b></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_4935"><br clear="none"></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5753">and I need to restart the pipeline every N seconds, which involves sending an EOS to the pipeline so the video can be closed (otherwise I will not be able to play with a media player).<br clear="none"></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_4940">I decided to handle the restart from the appsink callback function, since I can control the timeout each time I receive a "new-sample" to appsink. <br clear="none"></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5782"><br clear="none"></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5797">The problem I am stuck on is that the interrupt is catched, but the program hangs, the EOS message in never received and nothing happens. The program remain locked showing the string "<font id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5920" face="Courier New, courier, monaco, monospace, sans-serif"><b id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5921">Interrupt: Stopping pipeline ..." </b>(code below) and nothing more.<br clear="none"></font></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_4999">The code involved in the restart handling is the following:</div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5036"><br clear="none"></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5229"><font id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5318" face="Courier New, courier, monaco, monospace, sans-serif"><b id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5237">// global variables<br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5165" clear="none"></b></font></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5331"><font id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5348" face="Courier New, courier, monaco, monospace, sans-serif"><b id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5349">// use </b></font><font id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5318" face="Courier New, courier, monaco, monospace, sans-serif"><b id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5237">sigUsr1Watch for interrupt<br clear="none"></b></font></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5359"><font id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5318" face="Courier New, courier, monaco, monospace, sans-serif"><b id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5237">guint sigUsr1Watch;</b></font></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5330"><font id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5318" face="Courier New, courier, monaco, monospace, sans-serif"><b id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5237">// timeval is set when main starts, <br clear="none"></b></font></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5364"><font id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5318" face="Courier New, courier, monaco, monospace, sans-serif"><b id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5237">// then sum it a value in seconds<br clear="none"></b></font></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5360"><font id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5318" face="Courier New, courier, monaco, monospace, sans-serif"><b id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5237">time_t timeval;</b></font></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5372"><font id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5318" face="Courier New, courier, monaco, monospace, sans-serif"><b id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5237">// gstreamer loop<br clear="none"></b></font></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5373"><font id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5318" face="Courier New, courier, monaco, monospace, sans-serif"><b id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5237">GMainLoop *loop;</b></font></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5375"><font id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5318" face="Courier New, courier, monaco, monospace, sans-serif"><b id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5237">// restart control variable<br clear="none"></b></font></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5376"><font id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5318" face="Courier New, courier, monaco, monospace, sans-serif"><b id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5237">gboolean restart;<br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5169" clear="none"><br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5170" clear="none">// GstData is the struct containing the pipeline elements<br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5171" clear="none">gboolean irqUsr1Handler(GstData *user_data)<br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5172" clear="none">{<br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5173" clear="none">    GstElement *pipeline = (GstElement *) user_data->pipeline;<br clear="none"></b></font></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5679"><font id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5318" face="Courier New, courier, monaco, monospace, sans-serif"><b id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5237">    GstElement *appsink = (GstElement *) user_data->appsink;<br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5175" clear="none"><br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5176" clear="none">    g_print("Interrupt: Stopping pipeline ...\n");<br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5177" clear="none">    // stop emitting signals from appsink<br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5178" clear="none">    gst_app_sink_set_emit_signals(GST_APP_SINK(appsink), false);</b></font></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5819"><font id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5318" face="Courier New, courier, monaco, monospace, sans-serif"><b id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5237">    // send EOS to the pipeline<br clear="none"></b></font></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5838"><font id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5318" face="Courier New, courier, monaco, monospace, sans-serif"><b id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5237">    gst_element_send_event(pipeline, gst_event_new_eos());<br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5180" clear="none"><br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5181" clear="none">    restart = true;<br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5182" clear="none">    sigUsr1Watch = 0;<br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5183" clear="none">    return ELR_INTERRUPT;<br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5184" clear="none">}<br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5185" clear="none"></b></font></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_6013"><font id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5318" face="Courier New, courier, monaco, monospace, sans-serif"><b id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5237"><br clear="none"></b></font></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_6012"><font id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_6036" face="Courier New, courier, monaco, monospace, sans-serif"><b id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_6037">// </b></font><font id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5318" face="Courier New, courier, monaco, monospace, sans-serif"><b id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5237"><font id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_6038" face="Courier New, courier, monaco, monospace, sans-serif"><b id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_6039">dataProbe is the appsink callback function,</b></font></b></font></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_6076"><font id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5318" face="Courier New, courier, monaco, monospace, sans-serif"><b id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5237"><font id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_6038" face="Courier New, courier, monaco, monospace, sans-serif"><b id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_6039">// executed when "new-sample" signal is catched<br clear="none"></b></font></b></font></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_6040"><font id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5318" face="Courier New, courier, monaco, monospace, sans-serif"><b id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5237"><font id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_6038" face="Courier New, courier, monaco, monospace, sans-serif"><b id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_6039"></b></font>GstFlowReturn dataProbe(GstElement *source)<br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5187" clear="none">{   <br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5188" clear="none">    g_print("data probe\n");<br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5189" clear="none">    GstMapInfo map;<br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5190" clear="none">    GstSample *sample = gst_app_sink_pull_sample(GST_APP_SINK(source));<br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5191" clear="none">    GstBuffer *buffer = gst_sample_get_buffer(sample);<br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5192" clear="none">    gst_buffer_ref(buffer);<br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5193" clear="none">    gst_buffer_map (buffer, &map, GST_MAP_READ);<br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5194" clear="none">    <br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5195" clear="none">    // do something with map.data here ...<br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5196" clear="none"><br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5197" clear="none">    gst_buffer_unmap(buffer, &map);<br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5198" clear="none">    gst_buffer_unref(buffer);<br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5199" clear="none">    gst_sample_unref(sample);<br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5200" clear="none"></b></font></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5402"><font id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5318" face="Courier New, courier, monaco, monospace, sans-serif"><b id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5237">    <br clear="none"></b></font></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5401"><font id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5318" face="Courier New, courier, monaco, monospace, sans-serif"><b id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5237">    // check if time is elapsed<br clear="none"></b></font></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5406"><font id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5318" face="Courier New, courier, monaco, monospace, sans-serif"><b id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5237">    if(time(NULL) > timeval)<br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5202" clear="none">        raise(SIGUSR1);<br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5203" clear="none"><br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5204" clear="none">    return GST_FLOW_OK;<br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5205" clear="none">}<br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5206" clear="none"></b></font></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_6080"><br clear="none"></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_6079"><font id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5318" face="Courier New, courier, monaco, monospace, sans-serif"><b id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5237">// Gst Bus message handler function</b></font></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_6090"><font id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_6105" face="Courier New, courier, monaco, monospace, sans-serif"><b id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_6106">// here I catch the </b></font><font id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_6107" face="Courier New, courier, monaco, monospace, sans-serif"><b id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_6108">GST_MESSAGE_EOS</b></font></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_6091"><font id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5318" face="Courier New, courier, monaco, monospace, sans-serif"><b id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5237">gboolean gstMsgHandler(GstBus *bus, GstMessage *message, gpointer user_data)<br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5208" clear="none">{<br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5209" clear="none">    GstElement *pipeline = (GstElement *) user_data;<br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5210" clear="none"><br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5211" clear="none">    switch (GST_MESSAGE_TYPE (message))<br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5212" clear="none">    {</b></font></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5425"><font id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5318" face="Courier New, courier, monaco, monospace, sans-serif"><b id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5237">        case GST_MESSAGE_EOS:<br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5214" clear="none">        {</b></font></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5450"><font id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5441" face="Courier New, courier, monaco, monospace, sans-serif"><b id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5442">            // we have received the EOS.</b></font></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5464"><font id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5469" face="Courier New, courier, monaco, monospace, sans-serif"><b id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5470">            </b></font><font id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5481" face="Courier New, courier, monaco, monospace, sans-serif"><b id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5480">// we can stop the loop, close the pipeline and restart everything.</b></font><font id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5318" face="Courier New, courier, monaco, monospace, sans-serif"><b id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5237"><font id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5437" face="Courier New, courier, monaco, monospace, sans-serif"><b id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5438">      </b></font>    </b></font></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5427"><font id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5318" face="Courier New, courier, monaco, monospace, sans-serif"><b id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5237">            g_print("Got EOS from element \"%s\".\n", GST_MESSAGE_SRC_NAME (message));<br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5216" clear="none">            if (restart && g_main_loop_is_running(loop))<br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5217" clear="none">            {<br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5218" clear="none">                g_main_loop_quit(loop);<br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5219" clear="none">                g_main_loop_unref(loop);<br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5220" clear="none">            }<br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5221" clear="none">            break;<br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5222" clear="none">        }<br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5223" clear="none">        default:<br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5224" clear="none">            break;<br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5225" clear="none">    }<br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5226" clear="none"><br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5227" clear="none">    return true;<br id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5228" clear="none">}</b></font></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5539"><br clear="none"></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5548"><font id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5547" face="HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif">The problem is of course due to a bad interrupt handling in presence of the tee and queues, because with the following pipeline using filesink only for video recording:</font></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5609"><br clear="none"></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5610"><b id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5608">v4l2src device=/dev/webcam !
 videoconvert ! video/x-raw,width=544,height=288 ! v4l2h264enc ! h264parse ! mp4mux ! filesink location=/path/to/video.mp4 <br clear="none"></b></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5618"><b id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5608"><br clear="none"></b></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5578">everything works fine and I am able to restart the pipeline correctly.<br clear="none"></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5727">Is the appsink causing these problems ?<br clear="none"></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5690"><br clear="none"></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5691">What is the correct way to handle interrupt and signals in presence of multiple queues like my situation ?<br clear="none"></div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5726">Thank you in advance.</div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5725">Regards,</div><div dir="ltr" id="yiv5515098954yui_3_16_0_ym19_1_1505226458817_5724">Simon<br clear="none"></div></div></div></div><br clear="none"><br clear="none"></div>  </div> </div>  </div></div></div></div></div><br clear="none"><br clear="none"></div>  </div> </div>  </div></div></body></html>