summaryrefslogtreecommitdiffstats
path: root/pulsecaster/source.py
diff options
context:
space:
mode:
Diffstat (limited to 'pulsecaster/source.py')
-rw-r--r--pulsecaster/source.py36
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