diff options
Diffstat (limited to 'pulsecaster/source.py')
-rw-r--r-- | pulsecaster/source.py | 36 |
1 files changed, 20 insertions, 16 deletions
diff --git a/pulsecaster/source.py b/pulsecaster/source.py index daabff8..cc8902f 100644 --- a/pulsecaster/source.py +++ b/pulsecaster/source.py @@ -18,10 +18,7 @@ # Author: Paul W. Frields <stickster@gmail.com> from config import * -from gi.repository import Gtk, GObject -import pygst -pygst.require('0.10') -import gst +from gi.repository import Gtk, GObject, Gst from pulseaudio.PulseObj import PulseObj class PulseCasterSource: @@ -65,21 +62,27 @@ class PulseCasterSource: def create_level_pipeline(self, *args): '''Make a GStreamer pipeline that allows level checking''' print 'in create_level_pipeline' - pl = 'pulsesrc device=%s' % (self.pulsesrc) - pl += ' ! level message=true interval=100000000 ! fakesink' - print pl - self.pipeline = gst.parse_launch(pl) - self.pipeline.get_bus().add_signal_watch() - self.conn = self.pipeline.get_bus().connect('message::element', self.update_level) - self.pipeline.set_state(gst.STATE_PLAYING) + self.pipeline = Gst.Pipeline() + self.src = Gst.ElementFactory.make('pulsesrc', None) + self.lvl = Gst.ElementFactory.make('level', None) + self.lvl.set_property('message', True) + self.snk = Gst.ElementFactory.make('fakesink', None) + for e in (self.src, self.lvl, self.snk): + self.pipeline.add(e) + #self.pipeline = Gst.parse_launch(pl) + self.bus = self.pipeline.get_bus() + self.bus.add_signal_watch() + self.conn = self.bus.connect('message::element', self.update_level) + self.pipeline.set_state(Gst.State.PLAYING) print 'out of create_level_pipeline' def remove_level_pipeline(self, *args): '''Tear down the GStreamer pipeline attached to this object''' print 'in remove_level_pipeline' - self.pipeline.set_state(gst.STATE_NULL) - self.pipeline.get_bus().remove_signal_watch() - self.pipeline.get_bus().disconnect(self.conn) + self.pipeline.set_state(Gst.State.NULL) + self.bus = self.pipeline.get_bus() + self.bus.remove_signal_watch() + self.bus.disconnect(self.conn) self.conn = None self.pipeline = None print 'out of remove_level_pipeline' @@ -98,9 +101,10 @@ class PulseCasterSource: def update_level(self, bus, message, *args): '''Update this object's GtkProgressBar to reflect current level''' - if message.structure.get_name() == 'level': + structure = message.get_structure() + if structure.get_name() == 'level': # stick with left channel in stereo setups - peak = message.structure['peak'][0] + peak = structure.get_value('peak')[0] self.pbar.set_fraction(self.iec_scale(peak)/100) self.pbar.queue_draw() return True |