All pastes #103694 Raw Edit

frepe

public python v1 · immutable
#103694 ·published 2006-07-28 13:27 UTC
rendered paste body
#!/usr/bin/pythonimport sysimport gobjectimport pygstpygst.require('0.10')import gstimport gtk  import gtk.glade #Give glade file path fname = 'small_gui.glade'# create widget tree ...  App = gtk.glade.XML(fname)drawingarea1 = App.get_widget('drawingarea1')snapshot_image = App.get_widget('image1')snapshotbutton = App.get_widget('snapshotbutton')App.signal_autoconnect(locals())  called_once = Falseclass MyInjectorSrc(gst.BaseSrc):    __gsttemplates__ = (        gst.PadTemplate("src",                        gst.PAD_SRC,                        gst.PAD_ALWAYS,                        gst.caps_new_any()),        )    def __init__(self, name, buffer):        self.__gobject_init__()        self.mybuffer = buffer        self.set_name(name)            def do_create(self, offset, size):        dummybuffer = self.get_pad("src").alloc_buffer(0,self.mybuffer.size,self.mybuffer.caps)        return gst.FLOW_OK, self.mybuffer      def do_get_caps(self):        print "MyInjectorSrc.do_get_caps was called"        return self.mybuffer.caps    gobject.type_register(MyInjectorSrc)        class SnapshotCreator:    def __init__(self,buffer):        print "I am in SnapshotCreator.__init__, buffer.size = ", buffer.size        print "buffer.caps = ", str(buffer.caps)        self.src = MyInjectorSrc('injector_src',buffer)        self.csp = gst.element_factory_make("ffmpegcolorspace","csp1")        self.pngenc = gst.element_factory_make("pngenc")        self.sink = gst.element_factory_make("filesink")        self.sink.set_property("location","/home/frepe/src/biooptico/snapshot.png")        self.ss_pipeline = gst.Pipeline()        self.ss_pipeline.add(self.src,self.csp,self.pngenc,self.sink)        result = self.src.link(self.csp)        self.csp.link(self.pngenc)        self.pngenc.link(self.sink)        self.ss_pipeline.get_bus().add_signal_watch()        self.ss_pipeline.get_bus().add_watch(self.__ss_pipelineMessageHandler__)        print "Will now start ss_pipeline..."        self.ss_pipeline.set_state (gst.STATE_PLAYING)        print "... ss_pipeline started."            def __ss_pipelineMessageHandler__(self,bus,message):        print "State changed, str(message) = ", str(message)        return True        class Player:    def __init__(self):        self.playbin = gst.element_factory_make("playbin")        self.playbin.set_property('uri','file:///home/frepe/src/biooptico/AndersFilmer/davidsson1.avi')    def start(self):        self.playbin.set_state (gst.STATE_PLAYING)    def get_snapshot(self,button):        print "in Player.get_snapshot"        self.snapshot_buffer = self.playbin.get_property('frame')        print "got snapshot, size = ", self.snapshot_buffer.size        x = SnapshotCreator(self.snapshot_buffer)myPlayer = Player()snapshotbutton.connect("clicked",myPlayer.get_snapshot)myPlayer.start()gtk.main()