MCPcopy Create free account
hub / github.com/GStreamer/gst-python / Window

Class Window

old_examples/vumeter.py:47–103  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

45
46
47class Window(gtk.Dialog):
48 def __init__(self):
49 gtk.Dialog.__init__(self, 'Volume Level')
50 self.prepare_ui()
51
52 def prepare_ui(self):
53 self.set_default_size(200,60)
54 self.set_title('Volume Level')
55 self.connect('delete-event', lambda *x: gtk.main_quit())
56 self.vus = []
57 self.vus.append(fvumeter.FVUMeter())
58 self.vus.append(fvumeter.FVUMeter())
59 self.vbox.add(self.vus[0])
60 self.vbox.add(self.vus[1])
61 self.vus[0].show()
62 self.vus[1].show()
63
64 def error(self, message, secondary=None):
65 m = gtk.MessageDialog(self,
66 gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
67 gtk.MESSAGE_ERROR,
68 gtk.BUTTONS_OK,
69 message)
70 if secondary:
71 m.format_secondary_text(secondary)
72 m.run()
73
74 def on_message(self, bus, message):
75 if message.structure.get_name() == 'level':
76 s = message.structure
77 for i in range(0, len(s['peak'])):
78 self.vus[i].freeze_notify()
79 decay = clamp(s['decay'][i], -90.0, 0.0)
80 peak = clamp(s['peak'][i], -90.0, 0.0)
81 if peak > decay:
82 print "ERROR: peak bigger than decay!"
83
84 self.vus[i].set_property('decay', decay)
85 self.vus[i].set_property('peak', peak)
86 return True
87
88 def run(self):
89 try:
90 self.set_sensitive(False)
91 s = 'alsasrc ! level message=true ! fakesink'
92 pipeline = gst.parse_launch(s)
93 self.set_sensitive(True)
94 pipeline.get_bus().add_signal_watch()
95 i = pipeline.get_bus().connect('message::element', self.on_message)
96 pipeline.set_state(gst.STATE_PLAYING)
97 gtk.Dialog.run(self)
98 pipeline.get_bus().disconnect(i)
99 pipeline.get_bus().remove_signal_watch()
100 pipeline.set_state(gst.STATE_NULL)
101 except gobject.GError, e:
102 self.set_sensitive(True)
103 self.error('Could not create pipeline', e.__str__)
104

Callers 1

vumeter.pyFile · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected