GstBus not getting EOS Event

Matthew Waters ystreet00 at gmail.com
Wed Nov 6 11:46:30 UTC 2019


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
> 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/0f7afcb4/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20191106/0f7afcb4/attachment.sig>


More information about the gstreamer-devel mailing list