def on_webcam_frame(self, p2p, session, sender, frame): if int(session) != self.session: return if self.win is None: return try: width, height, data = libmimic.decode(self.decoder, frame) if self.errors > 0: self.errors = 0 #print "self.errors: %d\n" % self.errors except: print "Decode error" self.errors += 1 print "self.errors: %d\n" % self.errors if self.errors > 10: print "Too many errors, closing webcam" self.on_close() return if not self.init: print "Got first frame: %dx%d" % (width, height) self.win.set_size_request(width, height) self.win.show_all() self.init = True self.image.set_from_pixbuf(gtk.gdk.pixbuf_new_from_data(data,gtk.gdk.COLORSPACE_RGB,False,8,width,height,width*3)) if self.win is not None: self.win.queue_draw() self.image.queue_draw()
def on_webcam_frame(self, p2p, session, sender, frame): try: width, height, data = libmimic.decode(self.decoder, frame) except: print "Decode error, stopping webcam" self.on_close() return if not self.init: print "Got first frame: %dx%d" % (width, height) self.win.set_size_request(width, height) self.win.show_all() self.gc = gtk.gdk.GC(self.win.window) self.pixmap = gtk.gdk.Pixmap(self.win.window, width, height, -1) self.init = True if self.win.window: self.win.window.draw_rgb_image(self.gc, 0, 0, width, height, \ gtk.gdk.RGB_DITHER_NONE, data, width*3) self.win.queue_draw()