GstBus not getting EOS Event

Ravi Modha ravi.modha at tudip.com
Wed Nov 6 11:53:55 UTC 2019


Hello Mathew,

First of all, Thanks a lot for the reply. Even if i don’t set NULL to pipeline and send the EOS event to the pipeline, i never get EOS on the bus. The code i added in the small portion of my project and in the project instead of avfvideosrc, we have used v4l2src with appsink. Now without EOS pipeline is not cleaning up it’s resources and i am getting the memory leaks.

Please help me! i am stuck on this since a month.

> On Nov 6, 2019, at 5:16 PM, Matthew Waters <ystreet00 at gmail.com> wrote:
> 
> You cannot expect any messages on the bus after you have set the pipeline to NULL.  Your EOS message will be dropped on the floor and `self._pipeline.send_event(Gst.Event.new_eos())` would very likely return FALSE indicating a failure to send the message.
> 
> Cheers
> -Matt
> 
> On 4/11/19 7:46 pm, Ravi Modha wrote:
>> I am new to GStreamer and I have created a small example where I am recording the webcam and used app sink to get the sample but when I try to stop the pipeline by setting its state to null and sending EOS event, my bus callback function never gets called for the EOS. And because of this memory leak is happening.
>> 
>> Guys, Please help me
>> 
>> 
>> 
>> import gi import time import threading
>> 
>> gi.require_version('Gst', '1.0') gi.require_version('Gtk', '3.0') gi.require_version('GstApp', '1.0')
>> 
>> from gi.repository import GObject, Gst, Gtk, GstApp import signal
>> 
>> Gst.init(None)
>> 
>> class Main: 
>> 
>> shutdown = False
>> 
>> def __init__(self):
>>     signal.signal(signal.SIGINT, self.keyboardInterruptHandler)
>> 
>>     self._pipeline = Gst.parse_launch("avfvideosrc 
>>     name=avfvideosrc ! x264enc name=x264enc ! appsink 
>>     name=appsink max-buffers=1 drop=false sync=false emit- 
>>     signals=true wait-on-eos=false")
>>     bus = self._pipeline.get_bus()
>>     bus.add_signal_watch()
>>     bus.connect("message::eos", self._on_eos_from_sink_pipeline)
>>     bus.connect("message", self.on_status_changed)
>>     appsink = self._pipeline.get_by_name('appsink')
>>     appsink.connect('new-sample', self.on_new_sample)
>>     appsink.connect('eos', self.eos)
>> 
>>     #bus.connect('message', self.on_status_changed)
>>     self._pipeline.set_state(Gst.State.PLAYING)
>> 
>> def on_new_sample(self, appsink):
>>     return Gst.FlowReturn.OK
>> 
>> def _on_eos_from_sink_pipeline(self, _bus, _message):
>>     print("Got EOS from sink pipeline")
>>     exit()
>> 
>> def eos(self, sink):
>>     print("SINK EOS")
>>     return True
>> 
>> def on_status_changed(self, bus, message):
>>     print('Status: ', message.type)
>>     print('Object: ', message.src)
>>     print('Parsed Message: ', message.parse_state_changed())
>> 
>> def keyboardInterruptHandler(self,signal, frame):
>>     print("KeyboardInterrupt (ID: {}) has been caught. Cleaning 
>>     up...".format(signal))
>>     self.shutdown = True
>>     self.stopFetching()
>> 
>> def stopFetching(self):
>>     print("AT THE START OF STOP FETCHING")       
>>     self._pipeline.set_state(Gst.State.NULL)
>>     self._pipeline.send_event(Gst.Event.new_eos())
>>     print("AT THE END OF STOP FETCHING")
>> start = Main()
>> Gtk.main()`
>> --
>> Thanks & Regards,
>> -- 
>> Thanks & Regards,
>> 
>> Ravi Modha
>> ravi.modha at tudip.com <mailto:ravi.modha at tudip.com> | Skype: ravi.modha at tudip.com <mailto:ravi.modha at tudip.com>
>> 
>>  <https://tudip.com/>  <https://in.linkedin.com/company/tudip-technologies-pvt-ltd-> <https://clutch.co/profile/tudip-technologies> <https://www.goodfirms.co/companies/view/4439/tudip-technologies-pvt-ltd>  <https://www.facebook.com/TudipTechnologies>  <https://twitter.com/TudipTech>  <https://www.youtube.com/channel/UCoNPz2mbzNF_AZhLQEzuWCg>
>> www.tudip.com <https://tudip.com/> | Tudip in News <https://tudip.com/tudip-technologies-in-news/> 
>> +91 20 4674 0881 <callto:+91%2020%204674%200881> | +1 408 216 8162 <callto:+1%20408%20216%208162>
>> 
>> _______________________________________________
>> gstreamer-devel mailing list
>> gstreamer-devel at lists.freedesktop.org <mailto:gstreamer-devel at lists.freedesktop.org>
>> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel <https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20191106/fa795073/attachment-0001.html>


More information about the gstreamer-devel mailing list