home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / share / gst-python / 0.10 / examples / bps.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2009-04-20  |  3.3 KB  |  98 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. import pygtk
  5. pygtk.require('2.0')
  6. import sys
  7. import time
  8. import gobject
  9. import gtk
  10. import pygst
  11. pygst.require('0.10')
  12. import gst
  13.  
  14. class BPS(object):
  15.     
  16.     def __init__(self):
  17.         self.buffers = 0
  18.         self.start = 0
  19.  
  20.     
  21.     def done(self):
  22.         end = time.time()
  23.         dt = end - self.start
  24.         bps = self.buffers / dt
  25.         spb = dt / self.buffers
  26.         print '\t%d buffers / %fs\t= %f bps\t= %f spb' % (self.buffers, dt, bps, spb)
  27.  
  28.     
  29.     def fakesrc(self, buffers):
  30.         src = gst.element_factory_make('fakesrc', 'src')
  31.         src.set_property('silent', 1)
  32.         src.set_property('num_buffers', buffers)
  33.         return src
  34.  
  35.     
  36.     def fakesink(self):
  37.         sink = gst.element_factory_make('fakesink', 'sink')
  38.         sink.set_property('silent', 1)
  39.         return sink
  40.  
  41.     
  42.     def build_pipeline(self, buffers):
  43.         pipeline = gst.Pipeline('pipeline')
  44.         src = self.fakesrc(buffers)
  45.         pipeline.add(src)
  46.         sink = self.fakesink()
  47.         pipeline.add(sink)
  48.         src.link(sink)
  49.         return pipeline
  50.  
  51.     
  52.     def idle(self, pipeline):
  53.         return pipeline.iterate()
  54.  
  55.     
  56.     def test(self):
  57.         self.bus = self.pipeline.get_bus()
  58.         self.start = time.time()
  59.         self.pipeline.set_state(gst.STATE_PLAYING)
  60.         while None:
  61.             msg = self.bus.poll(gst.MESSAGE_EOS | gst.MESSAGE_ERROR, gst.SECOND)
  62.             if msg:
  63.                 break
  64.                 continue
  65.             continue
  66.             self.pipeline.set_state(gst.STATE_NULL)
  67.             self.done()
  68.             return None
  69.  
  70.     
  71.     def run(self, buffers):
  72.         self.buffers = buffers
  73.         print '# Testing buffer processing rate for "fakesrc ! fakesink"'
  74.         print '# bps = buffers per second'
  75.         print '# spb = seconds per buffer'
  76.         self.pipeline = self.build_pipeline(buffers)
  77.         if not self.pipeline:
  78.             raise AssertionError
  79.         self.test()
  80.  
  81.  
  82.  
  83. def main(args):
  84.     '''GStreamer Buffers-Per-Second tester'''
  85.     if len(args) < 2:
  86.         print 'usage: %s buffers' % args[0]
  87.         return 1
  88.     bps = BPS()
  89.     buffers = int(args[1])
  90.     if buffers < 1:
  91.         print 'buffers must be higher than 0'
  92.         return None
  93.     bps.run(buffers)
  94.  
  95. if __name__ == '__main__':
  96.     sys.exit(main(sys.argv))
  97.  
  98.