<div dir="ltr"><font face="arial, sans-serif">Hi. I'm new in gstreamer and i have a question about finishing some type of pipelines.</font><div><font face="arial, sans-serif">When i using pipeline like that:</font></div><div><pre class="gmail-lang-py gmail-prettyprint gmail-prettyprinted" style="margin-top:0px;margin-bottom:1em;padding:12px 8px;border:0px;font-variant-numeric:inherit;font-variant-east-asian:inherit;font-stretch:inherit;line-height:inherit;vertical-align:baseline;box-sizing:inherit;width:auto;max-height:600px;overflow:auto;border-radius:3px;color:rgb(57,51,24)"><code style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-stretch:inherit;line-height:inherit;vertical-align:baseline;box-sizing:inherit;white-space:inherit"><span class="gmail-str" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-stretch:inherit;line-height:inherit;vertical-align:baseline;box-sizing:inherit;color:rgb(125,39,39)"><font face="arial, sans-serif">appsrc ! videoconvert ! omxh264enc ! h264parse ! qtmux ! filesink location=test.mov</font></span></code></pre></div><div><font face="arial, sans-serif">In the end, before delete pipeline i send EOS message like that (where source is appsrc):</font></div><div><font face="arial, sans-serif"><br></font></div><div><pre style="margin-top:0px;margin-bottom:0px"><font face="arial, sans-serif"><span style="color:rgb(128,128,0)">if</span><span style="color:rgb(192,192,192)"> </span>(gst_app_src_end_of_stream(GST_APP_SRC(source))<span style="color:rgb(192,192,192)"> </span>!=<span style="color:rgb(192,192,192)"> </span>GST_FLOW_OK)</font></pre>
<pre style="margin-top:0px;margin-bottom:0px"><font face="arial, sans-serif">{</font></pre>
<pre style="margin-top:0px;margin-bottom:0px"><font face="arial, sans-serif"><span style="color:rgb(192,192,192)">    </span><span style="color:rgb(128,128,0)">return</span>;</font></pre>
<pre style="margin-top:0px;margin-bottom:0px"><font face="arial, sans-serif">}</font></pre>
<pre style="margin-top:0px;margin-bottom:0px"><font face="arial, sans-serif"><br></font></pre>
<pre style="margin-top:0px;margin-bottom:0px"><font face="arial, sans-serif">GstBus*<span style="color:rgb(192,192,192)"> </span>bus<span style="color:rgb(192,192,192)"> </span>=<span style="color:rgb(192,192,192)"> </span>gst_element_get_bus(pipeline);</font></pre>
<pre style="margin-top:0px;margin-bottom:0px"><font face="arial, sans-serif">GstMessage<span style="color:rgb(192,192,192)"> </span>*msg<span style="color:rgb(192,192,192)"> </span>=<span style="color:rgb(192,192,192)"> </span>gst_bus_timed_pop_filtered(bus,<span style="color:rgb(192,192,192)"> </span>GST_CLOCK_TIME_NONE,<span style="color:rgb(192,192,192)"> </span>(GstMessageType)(GST_MESSAGE_ERROR<span style="color:rgb(192,192,192)"> </span>|<span style="color:rgb(192,192,192)"> </span>GST_MESSAGE_EOS));</font></pre>
<pre style="margin-top:0px;margin-bottom:0px"><font face="arial, sans-serif"><span style="color:rgb(128,128,0)">if</span><span style="color:rgb(192,192,192)"> </span>(!msg<span style="color:rgb(192,192,192)"> </span>||<span style="color:rgb(192,192,192)"> </span>GST_MESSAGE_TYPE(msg)<span style="color:rgb(192,192,192)"> </span>==<span style="color:rgb(192,192,192)"> </span>GST_MESSAGE_ERROR)</font></pre>
<pre style="margin-top:0px;margin-bottom:0px"><font face="arial, sans-serif">{</font></pre>
<pre style="margin-top:0px;margin-bottom:0px"><font face="arial, sans-serif"><span style="color:rgb(192,192,192)">    </span><span style="color:rgb(128,128,0)">if</span>(msg<span style="color:rgb(192,192,192)"> </span>!=<span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,128)">NULL</span>)</font></pre>
<pre style="margin-top:0px;margin-bottom:0px"><font face="arial, sans-serif"><span style="color:rgb(192,192,192)">    </span>{</font></pre>
<pre style="margin-top:0px;margin-bottom:0px"><font face="arial, sans-serif"><span style="color:rgb(192,192,192)">        </span>gst_message_unref(msg);</font></pre>
<pre style="margin-top:0px;margin-bottom:0px"><font face="arial, sans-serif"><span style="color:rgb(192,192,192)">        </span>g_object_unref(G_OBJECT(bus));</font></pre>
<pre style="margin-top:0px;margin-bottom:0px"><font face="arial, sans-serif"><span style="color:rgb(192,192,192)">    </span>}</font></pre>
<pre style="margin-top:0px;margin-bottom:0px"><font face="arial, sans-serif"><span style="color:rgb(192,192,192)">    </span><span style="color:rgb(128,128,0)">return</span>;</font></pre>
<pre style="margin-top:0px;margin-bottom:0px"><font face="arial, sans-serif">}</font></pre></div><div><font face="arial, sans-serif"><br></font></div><div><font face="arial, sans-serif">But what if i have pipeline like this and there is no appsrc:</font></div><div><font face="arial, sans-serif"><br></font></div><div><font face="arial, sans-serif">"rtspsrc location=rtsp://localhost:57575/vd latency=0 tcp-timeout=2000000 connection-speed=100000 protocols=GST_RTSP_LOWER_TRANS_TCP ! application/x-rtp,encoding-name=H265,payload=96 ! rtph265depay ! h265parse  ! matroskamux ! filesink location=test_10bit.mkv"<br></font></div><div><font face="arial, sans-serif"><br></font></div><div><font face="arial, sans-serif">As i can understand, solution in this case is to replace 

gst_app_src_end_of_stream(GST_APP_SRC(source)  with 

gst_element_send_event </font></div><div><div><font face="arial, sans-serif"><br></font></div><div><pre style="margin-top:0px;margin-bottom:0px"><font face="arial, sans-serif"><span style="color:rgb(128,128,0)">if</span><span style="color:rgb(192,192,192)"> </span>(!<span style="color:rgb(0,0,0);white-space:normal">gst_element_send_event (m_pipeline, gst_event_new_eos())</span>)</font></pre>
<pre style="margin-top:0px;margin-bottom:0px"><font face="arial, sans-serif">{</font></pre>
<pre style="margin-top:0px;margin-bottom:0px"><font face="arial, sans-serif"><span style="color:rgb(192,192,192)">    </span><span style="color:rgb(128,128,0)">return</span>;</font></pre>
<pre style="margin-top:0px;margin-bottom:0px"><font face="arial, sans-serif">}</font></pre>
<pre style="margin-top:0px;margin-bottom:0px"><font face="arial, sans-serif"><br></font></pre>
<pre style="margin-top:0px;margin-bottom:0px"><font face="arial, sans-serif">GstBus*<span style="color:rgb(192,192,192)"> </span>bus<span style="color:rgb(192,192,192)"> </span>=<span style="color:rgb(192,192,192)"> </span>gst_element_get_bus(pipeline);</font></pre>
<pre style="margin-top:0px;margin-bottom:0px"><font face="arial, sans-serif">GstMessage<span style="color:rgb(192,192,192)"> </span>*msg<span style="color:rgb(192,192,192)"> </span>=<span style="color:rgb(192,192,192)"> </span>gst_bus_timed_pop_filtered(bus,<span style="color:rgb(192,192,192)"> </span>GST_CLOCK_TIME_NONE,<span style="color:rgb(192,192,192)"> </span>(GstMessageType)(GST_MESSAGE_ERROR<span style="color:rgb(192,192,192)"> </span>|<span style="color:rgb(192,192,192)"> </span>GST_MESSAGE_EOS));</font></pre>
<pre style="margin-top:0px;margin-bottom:0px"><font face="arial, sans-serif"><span style="color:rgb(128,128,0)">if</span><span style="color:rgb(192,192,192)"> </span>(!msg<span style="color:rgb(192,192,192)"> </span>||<span style="color:rgb(192,192,192)"> </span>GST_MESSAGE_TYPE(msg)<span style="color:rgb(192,192,192)"> </span>==<span style="color:rgb(192,192,192)"> </span>GST_MESSAGE_ERROR)</font></pre>
<pre style="margin-top:0px;margin-bottom:0px"><font face="arial, sans-serif">{</font></pre>
<pre style="margin-top:0px;margin-bottom:0px"><font face="arial, sans-serif"><span style="color:rgb(192,192,192)">    </span><span style="color:rgb(128,128,0)">if</span>(msg<span style="color:rgb(192,192,192)"> </span>!=<span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,128)">NULL</span>)</font></pre>
<pre style="margin-top:0px;margin-bottom:0px"><font face="arial, sans-serif"><span style="color:rgb(192,192,192)">    </span>{</font></pre>
<pre style="margin-top:0px;margin-bottom:0px"><font face="arial, sans-serif"><span style="color:rgb(192,192,192)">        </span>gst_message_unref(msg);</font></pre>
<pre style="margin-top:0px;margin-bottom:0px"><font face="arial, sans-serif"><span style="color:rgb(192,192,192)">        </span>g_object_unref(G_OBJECT(bus));</font></pre>
<pre style="margin-top:0px;margin-bottom:0px"><font face="arial, sans-serif"><span style="color:rgb(192,192,192)">    </span>}</font></pre>
<pre style="margin-top:0px;margin-bottom:0px"><font face="arial, sans-serif"><span style="color:rgb(192,192,192)">    </span><span style="color:rgb(128,128,0)">return</span>;</font></pre>
<pre style="margin-top:0px;margin-bottom:0px"><font face="arial, sans-serif">}</font></pre></div></div><div><div><pre style="margin-top:0px;margin-bottom:0px"><font face="arial, sans-serif">Is it correct solution?</font></pre></div></div><div><br></div></div>