[gst-devel] Speed up my converter (gst-python)

Edward Hervey bilboed at gmail.com
Sun Oct 22 11:37:35 CEST 2006


Hi,

  Are you using a mainloop ? Or are you polling the bus ? Also,
gtk.threads_* is a tricky way of handling threads. You should remove
those and rather use at the beginning of your code:
  import gobject
  gobjec.threads_init()
  import pygst
  ....

On 10/21/06, Fredrik Persson <frepe at bredband.net> wrote:
> Hi!
>
> I've written this class that takes a gst.Buffer and a gtk.Image and
> displays the buffer in the gtk.Image. This is meant to be used as a
> screenshot function.
>
> But it's slow! It takes more than a second from the moment I click my
> snapshot button in my gui to the moment when I see the image displayed.
> I've measured this thing and it seems that it takes almost a full second
> from the when I start the pipeline (self.ss_pipeline.set_state
> (gst.STATE_PLAYING) ) until I reach my handoff callback,
> __sinkHandoffHandler__.
>
> Any ideas on how to speed this up is appreciated, thanks!
>
> /Fredrik
>
> class SnapshotCreatorAndSetInImagearea(threading.Thread):
>     def run(self,buffer,imagearea):
>         self.imagearea = imagearea
>         self.src = MyInjectorSrcBuffer2Pixbuf("injector_src",buffer)
>         self.csp = gst.element_factory_make("ffmpegcolorspace")
>         self.caps = gst.element_factory_make("capsfilter")
>         self.sink = gst.element_factory_make("fakesink")
> self.caps.set_property('caps',gst.caps_from_string('video/x-raw-rgb,bpp=24,depth=24,endianness=BIG_ENDIAN,red_mask=0xff0000,green_mask=0x00ff00,blue_mask=0x0000ff'))
>
>         self.ss_pipeline = gst.Pipeline()
>         self.ss_pipeline.add(self.src,self.csp,self.caps,self.sink)
>
>         self.src.link(self.csp)
>         self.csp.link(self.caps)
>         self.caps.link(self.sink)
>
>         self.sink.set_property('signal-handoffs',True)
>         self.sink.set_property('preroll-queue-len',1)
>
>         self.sink.connect('handoff',self.__sinkHandoffHandler__)
>
>         self.ss_pipeline.set_state (gst.STATE_PLAYING)
>
>     def __sinkHandoffHandler__(self,element,buffer,pad):
>         gtk.threads_enter()
> self.imagearea.set_from_pixbuf(gtk.gdk.pixbuf_new_from_data(buffer.data,gtk.gdk.COLORSPACE_RGB,False,8,buffer.get_caps()[0]["width"],buffer.get_caps()[0]["height"],buffer.get_caps()[0]["width"]*3))
>         gtk.threads_leave()
>         return True
>
> -------------------------------------------------------------------------
> Using Tomcat but need to do more? Need to support web services, security?
> Get stuff done quickly with pre-integrated technology to make your job easier
> Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
> http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
>


-- 
Edward Hervey
Multimedia editing developer / Fluendo S.A.
http://www.pitivi.org/




More information about the gstreamer-devel mailing list