mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-17 03:35:21 +00:00
examples/fvumeter.py: condense code by using table and loop
Original commit message from CVS: 2005-09-23 Thomas Vander Stichele <thomas at apestaart dot org> * examples/fvumeter.py: condense code by using table and loop * examples/vumeter.py: fix up example for new API for both bus and level element
This commit is contained in:
parent
cfdc81b592
commit
ea0f5ff24b
4 changed files with 52 additions and 100 deletions
|
@ -1,3 +1,10 @@
|
|||
2005-09-23 Thomas Vander Stichele <thomas at apestaart dot org>
|
||||
|
||||
* examples/fvumeter.py:
|
||||
condense code by using table and loop
|
||||
* examples/vumeter.py:
|
||||
fix up example for new API for both bus and level element
|
||||
|
||||
2005-09-23 Thomas Vander Stichele <thomas at apestaart dot org>
|
||||
|
||||
* gst/gst.defs:
|
||||
|
|
2
common
2
common
|
@ -1 +1 @@
|
|||
Subproject commit 345fd9851051274dd758a19bbe33dbb561b4d303
|
||||
Subproject commit 7caeee4b949b4388927fec7fcf25f767429bde30
|
|
@ -194,89 +194,31 @@ class FVUMeter(gtk.DrawingArea):
|
|||
self.topborder + vumeter_height)
|
||||
|
||||
# draw tick marks
|
||||
# - 90.0 dB
|
||||
self.window.draw_line(self.style.black_gc, self.leftborder,
|
||||
h - self.bottomborder, self.leftborder,
|
||||
h - self.bottomborder + 5)
|
||||
layout = self.create_pango_layout("-90")
|
||||
layout_width, layout_height = layout.get_pixel_size()
|
||||
self.window.draw_layout(self.style.black_gc,
|
||||
self.leftborder - int(layout_width/2),
|
||||
h - self.bottomborder + 7, layout)
|
||||
scalers = [
|
||||
('-90', 0.0),
|
||||
('-40', 0.15),
|
||||
('-30', 0.30),
|
||||
('-20', 0.50),
|
||||
('-10', 0.75),
|
||||
( '-5', 0.875),
|
||||
( '0', 1.0),
|
||||
]
|
||||
for level, scale in scalers:
|
||||
self.window.draw_line(self.style.black_gc,
|
||||
self.leftborder + int (scale * vumeter_width),
|
||||
h - self.bottomborder,
|
||||
self.leftborder + int(scale * vumeter_width),
|
||||
h - self.bottomborder + 5)
|
||||
self.window.draw_line(self.style.black_gc,
|
||||
self.leftborder, h - self.bottomborder,
|
||||
self.leftborder, h - self.bottomborder + 5)
|
||||
layout = self.create_pango_layout(level)
|
||||
layout_width, layout_height = layout.get_pixel_size()
|
||||
self.window.draw_layout(self.style.black_gc,
|
||||
self.leftborder + int(scale * vumeter_width) - int(layout_width / 2),
|
||||
h - self.bottomborder + 7, layout)
|
||||
|
||||
# -40.0 dB
|
||||
self.window.draw_line(self.style.black_gc,
|
||||
self.leftborder + int(0.15*vumeter_width),
|
||||
h - self.bottomborder,
|
||||
self.leftborder + int(0.15*vumeter_width),
|
||||
h - self.bottomborder + 5)
|
||||
layout = self.create_pango_layout("-40")
|
||||
layout_width, layout_height = layout.get_pixel_size()
|
||||
self.window.draw_layout(self.style.black_gc,
|
||||
self.leftborder + int(0.15*vumeter_width) - int(layout_width/2),
|
||||
h - self.bottomborder + 7, layout)
|
||||
|
||||
# -30.0 dB
|
||||
self.window.draw_line(self.style.black_gc,
|
||||
self.leftborder + int(0.30*vumeter_width),
|
||||
h - self.bottomborder,
|
||||
self.leftborder + int(0.30*vumeter_width),
|
||||
h - self.bottomborder + 5)
|
||||
layout = self.create_pango_layout("-30")
|
||||
layout_width, layout_height = layout.get_pixel_size()
|
||||
self.window.draw_layout(self.style.black_gc,
|
||||
self.leftborder + int(0.30*vumeter_width) - int(layout_width/2),
|
||||
h - self.bottomborder + 7, layout)
|
||||
|
||||
# -20.0 dB
|
||||
self.window.draw_line(self.style.black_gc,
|
||||
self.leftborder + int(0.50*vumeter_width),
|
||||
h - self.bottomborder,
|
||||
self.leftborder + int(0.50*vumeter_width),
|
||||
h - self.bottomborder + 5)
|
||||
layout = self.create_pango_layout("-20")
|
||||
layout_width, layout_height = layout.get_pixel_size()
|
||||
self.window.draw_layout(self.style.black_gc,
|
||||
self.leftborder + int(0.50*vumeter_width) - int(layout_width/2),
|
||||
h - self.bottomborder + 7, layout)
|
||||
|
||||
# -10.0dB
|
||||
self.window.draw_line(self.style.black_gc,
|
||||
self.leftborder + int(0.75*vumeter_width),
|
||||
h - self.bottomborder,
|
||||
self.leftborder + int(0.75*vumeter_width),
|
||||
h - self.bottomborder + 5)
|
||||
layout = self.create_pango_layout("-10")
|
||||
layout_width, layout_height = layout.get_pixel_size()
|
||||
self.window.draw_layout(self.style.black_gc,
|
||||
self.leftborder + int(0.75*vumeter_width) - int(layout_width/2),
|
||||
h - self.bottomborder + 7, layout)
|
||||
|
||||
# - 5.0dB
|
||||
self.window.draw_line(self.style.black_gc,
|
||||
self.leftborder + int(0.875*vumeter_width),
|
||||
h - self.bottomborder,
|
||||
self.leftborder + int(0.875*vumeter_width),
|
||||
h - self.bottomborder + 5)
|
||||
layout = self.create_pango_layout("-5")
|
||||
layout_width, layout_height = layout.get_pixel_size()
|
||||
self.window.draw_layout(self.style.black_gc,
|
||||
self.leftborder + int(0.875*vumeter_width) - int(layout_width/2),
|
||||
h - self.bottomborder + 7, layout)
|
||||
|
||||
# 0.0dB
|
||||
self.window.draw_line(self.style.black_gc,
|
||||
self.leftborder + vumeter_width,
|
||||
h - self.bottomborder,
|
||||
self.leftborder + vumeter_width,
|
||||
h - self.bottomborder + 5)
|
||||
layout = self.create_pango_layout("0")
|
||||
layout_width, layout_height = layout.get_pixel_size()
|
||||
self.window.draw_layout(self.style.black_gc,
|
||||
self.leftborder + vumeter_width - int(layout_width/2),
|
||||
h - self.bottomborder + 7, layout)
|
||||
|
||||
# draw the value to the right
|
||||
# draw the peak level to the right
|
||||
layout = self.create_pango_layout("%.2fdB" % self.peaklevel)
|
||||
layout_width, layout_height = layout.get_pixel_size()
|
||||
self.window.draw_layout(self.style.black_gc,
|
||||
|
|
|
@ -51,9 +51,13 @@ class Window(gtk.Dialog):
|
|||
self.set_default_size(200,60)
|
||||
self.set_title('Volume Level')
|
||||
self.connect('delete-event', lambda *x: gtk.main_quit())
|
||||
self.vu = fvumeter.FVUMeter()
|
||||
self.vu.show()
|
||||
self.vbox.pack_start(self.vu)
|
||||
self.vus = []
|
||||
self.vus.append(fvumeter.FVUMeter())
|
||||
self.vus.append(fvumeter.FVUMeter())
|
||||
self.vbox.add(self.vus[0])
|
||||
self.vbox.add(self.vus[1])
|
||||
self.vus[0].show()
|
||||
self.vus[1].show()
|
||||
|
||||
def error(self, message, secondary=None):
|
||||
m = gtk.MessageDialog(self,
|
||||
|
@ -66,18 +70,13 @@ class Window(gtk.Dialog):
|
|||
m.run()
|
||||
|
||||
def on_message(self, bus, message):
|
||||
t = message.type
|
||||
if t == gst.MESSAGE_STATE_CHANGED:
|
||||
pass
|
||||
if (t == gst.MESSAGE_APPLICATION and
|
||||
message.structure.get_name() == 'level'):
|
||||
if message.structure.get_name() == 'level':
|
||||
s = message.structure
|
||||
self.vu.set_property('peak', clamp(s['peak'][0], -90.0, 0.0))
|
||||
self.vu.set_property('decay', clamp(s['decay'][0], -90.0, 0.0))
|
||||
else:
|
||||
print '%s: %s:' % (message.src.get_path_string(),
|
||||
message.type.value_nicks[1])
|
||||
print ' %s' % message.structure.to_string()
|
||||
for i in range(0, len(s['peak'])):
|
||||
self.vus[i].set_property('peak',
|
||||
clamp(s['peak'][i], -90.0, 0.0))
|
||||
self.vus[i].set_property('decay',
|
||||
clamp(s['decay'][i], -90.0, 0.0))
|
||||
return True
|
||||
|
||||
def run(self):
|
||||
|
@ -86,8 +85,12 @@ class Window(gtk.Dialog):
|
|||
s = 'alsasrc ! level message=true ! fakesink'
|
||||
pipeline = gst.parse_launch(s)
|
||||
self.set_sensitive(True)
|
||||
watch_id = pipeline.get_bus().add_watch(self.on_message)
|
||||
if pipeline.set_state(gst.STATE_PLAYING) == gst.STATE_SUCCESS:
|
||||
# FIXME: using gst.MESSAGE_APPLICATION does not give me
|
||||
# any messages at all
|
||||
watch_id = pipeline.get_bus().add_watch(gst.MESSAGE_ANY,
|
||||
self.on_message)
|
||||
if pipeline.set_state(gst.STATE_PLAYING) == gst.STATE_CHANGE_SUCCESS:
|
||||
print "going into main"
|
||||
gtk.Dialog.run(self)
|
||||
else:
|
||||
self.error('Could not set state')
|
||||
|
@ -99,5 +102,5 @@ class Window(gtk.Dialog):
|
|||
|
||||
if __name__ == '__main__':
|
||||
w = Window()
|
||||
w.show()
|
||||
w.show_all()
|
||||
w.run()
|
||||
|
|
Loading…
Reference in a new issue