GstBus not getting EOS Event

Ravi Modha ravi.modha at tudip.com
Mon Nov 4 08:46:08 UTC 2019


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.OKdef
_on_eos_from_sink_pipeline(self, _bus, _message):    print("Got EOS
from sink pipeline")    exit()def eos(self, sink):    print("SINK
EOS")    return Truedef 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 <ravi.modha at tudip.com> | **Skype: **ravi.modha at tudip.com
<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>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20191104/1a05eb3e/attachment.html>


More information about the gstreamer-devel mailing list