Advertisement
Guest User

cairooverlay

a guest
Jun 18th, 2012
229
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.95 KB | None | 0 0
  1. #!/usr/bin/python
  2.  
  3. import pygst
  4. pygst.require("0.10")
  5. import gst
  6. import pygtk
  7. import gtk
  8. import gtk.glade
  9. import cairo
  10.  
  11. class Main:
  12.     def __init__(self):
  13.  
  14.         # Create gui bits and bobs
  15.  
  16.         self.wTree = gtk.glade.XML("gui.glade", "mainwindow")
  17.        
  18.         signals = {
  19.             "on_play_clicked" : self.OnPlay,
  20.             "on_stop_clicked" : self.OnStop,
  21.             "on_quit_clicked" : self.OnQuit,
  22.         }
  23.  
  24.         self.wTree.signal_autoconnect(signals)
  25.  
  26.         # Create GStreamer bits and bobs
  27.         self.pipeline = gst.Pipeline("mypipeline")
  28.  
  29.         self.videotestsrc = gst.element_factory_make("videotestsrc", "source")
  30.         self.pipeline.add(self.videotestsrc)
  31.        
  32.         self.adaptor1 = gst.element_factory_make("ffmpegcolorspace", "adaptor1");
  33.         self.pipeline.add(self.adaptor1)
  34.        
  35.         self.cairooverlay = gst.element_factory_make("cairooverlay")
  36.         self.cairooverlay.connect("draw", self.OnDraw)
  37.         self.pipeline.add(self.cairooverlay)
  38.        
  39.         self.adaptor2 = gst.element_factory_make("ffmpegcolorspace", "adaptor2");
  40.         self.pipeline.add(self.adaptor2)
  41.  
  42.         self.sink = gst.element_factory_make("autovideosink")
  43.         self.pipeline.add(self.sink)
  44.  
  45.         self.videotestsrc.link(self.adaptor1)
  46.         self.adaptor1.link(self.cairooverlay)
  47.         self.cairooverlay.link(self.adaptor2)
  48.         self.adaptor2.link(self.sink)
  49.  
  50.         self.window = self.wTree.get_widget("mainwindow")
  51.         self.window.show_all()
  52.  
  53.     def OnPlay(self, widget):
  54.         print "play"
  55.         self.pipeline.set_state(gst.STATE_PLAYING)
  56.  
  57.     def OnStop(self, widget):
  58.         print "stop"
  59.         self.pipeline.set_state(gst.STATE_READY)
  60.        
  61.     def OnQuit(self, widget):
  62.         gtk.main_quit()
  63.  
  64.     def OnDraw(this, overlay, cr, timestamp, duration): # one argument ommited
  65.        
  66.         # draw text
  67.         #cr.select_font_face('Sans')
  68.         #cr.set_font_size(60) # em-square height is 90 pixels
  69.         #cr.move_to(10, 90) # move to point (x, y) = (10, 90)
  70.         #cr.set_source_rgb(1.00, 0.83, 0.00) # yellow
  71.         cr.show_text('Hello World')
  72.        
  73.         # finish up
  74.         cr.stroke() # commit to surface
  75.  
  76. start=Main()
  77. gtk.main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement