diff options
Diffstat (limited to 'pulsecaster/ui.py')
-rw-r--r-- | pulsecaster/ui.py | 66 |
1 files changed, 37 insertions, 29 deletions
diff --git a/pulsecaster/ui.py b/pulsecaster/ui.py index 47166fc..db65a1b 100644 --- a/pulsecaster/ui.py +++ b/pulsecaster/ui.py @@ -20,17 +20,20 @@ from config import * +import gi +gi.require_version('Gst', '0.10') +del gi + +from gi.repository import Gtk, GObject, Gst +Gst.init(None) + import gconfig from pulseaudio.PulseObj import PulseObj from listener import * from source import * -from gi.repository import Gtk, GObject import os import sys import tempfile -import pygst -pygst.require('0.10') -import gst from datetime import datetime import gettext @@ -237,13 +240,13 @@ class PulseCasterUI: self.close.set_sensitive(False) self.adv_button.set_sensitive(False) - self.combiner = gst.Pipeline('PulseCasterCombinePipe') - self.lsource = gst.element_factory_make('pulsesrc', 'lsrc') + self.combiner = Gst.Pipeline() + self.lsource = Gst.ElementFactory.make('pulsesrc', 'lsrc') self.lsource.set_property('device', self.user_vox.pulsesrc) - self.rsource = gst.element_factory_make('pulsesrc', 'rsrc') + self.rsource = Gst.ElementFactory.make('pulsesrc', 'rsrc') self.rsource.set_property('device', self.subject_vox.pulsesrc) - self.adder = gst.element_factory_make('adder', 'mix') + self.adder = Gst.ElementFactory.make('adder', 'mix') if self.gconfig.expert is not True: # Create temporary file @@ -251,29 +254,30 @@ class PulseCasterUI: % (NAME)) self.tempfile = os.fdopen(self.tempfd) _debugPrint('tempfile: %s (fd %s)' % (self.temppath, self.tempfd)) - self.encoder = gst.element_factory_make(self.gconfig.codec + + self.encoder = Gst.ElementFactory.make(self.gconfig.codec + 'enc', 'enc') if self.gconfig.codec == 'vorbis': - self.muxer = gst.element_factory_make('oggmux', 'mux') - self.filesink = gst.element_factory_make('filesink', 'fsink') + self.muxer = Gst.ElementFactory.make('oggmux', 'mux') + self.filesink = Gst.ElementFactory.make('filesink', 'fsink') self.filesink.set_property('location', self.temppath) - self.combiner.add(self.lsource, - self.rsource, - self.adder, - self.encoder, - self.filesink) + for e in (self.lsource, + self.rsource, + self.adder, + self.encoder, + self.filesink): + self.combiner.add(e) + if self.gconfig.codec == 'vorbis': self.combiner.add(self.muxer) - gst.element_link_many(self.lsource, - self.adder, - self.encoder) + self.lsource.link(self.adder) + self.adder.link(self.encoder) if self.gconfig.codec == 'vorbis': self.encoder.link(self.muxer) self.muxer.link(self.filesink) else: # flac self.encoder.link(self.filesink) - gst.element_link_many(self.rsource, self.adder) + self.rsource.link(self.adder) else: # Create temporary file (self.tempfd1, self.temppath1) = tempfile.mkstemp(prefix='%s-1-tmp.' @@ -287,11 +291,11 @@ class PulseCasterUI: self.temppath2)) # We're in expert mode # Disregard vorbis, use WAV - self.encoder1 = gst.element_factory_make('wavenc', 'enc1') - self.encoder2 = gst.element_factory_make('wavenc', 'enc2') - self.filesink1 = gst.element_factory_make('filesink', 'fsink1') + self.encoder1 = Gst.ElementFactory.make('wavenc', 'enc1') + self.encoder2 = Gst.ElementFactory.make('wavenc', 'enc2') + self.filesink1 = Gst.ElementFactory.make('filesink', 'fsink1') self.filesink1.set_property('location', self.temppath1) - self.filesink2 = gst.element_factory_make('filesink', 'fsink2') + self.filesink2 = Gst.ElementFactory.make('filesink', 'fsink2') self.filesink2.set_property('location', self.temppath2) self.combiner.add(self.lsource, self.rsource, @@ -299,15 +303,17 @@ class PulseCasterUI: self.encoder2, self.filesink1, self.filesink2) - gst.element_link_many(self.lsource, self.encoder1, self.filesink1) - gst.element_link_many(self.rsource, self.encoder2, self.filesink2) + self.lsource.link(self.encoder1) + self.encoder1.link(self.filesink1) + self.rsource.link(self.encoder2) + self.encoder2.link(self.filesink2) # FIXME: Dim elements other than the 'record' widget self.record.set_label(Gtk.STOCK_MEDIA_STOP) self.record.disconnect(self.record_id) self.stop_id = self.record.connect('clicked', self.on_stop) self.record.show() - self.combiner.set_state(gst.STATE_PLAYING) + self.combiner.set_state(Gst.State.PLAYING) # Start timer self.starttime = datetime.now() self._update_time() @@ -316,7 +322,7 @@ class PulseCasterUI: self.trayicon.set_visible(True) def on_stop(self, *args): - self.combiner.set_state(gst.STATE_NULL) + self.combiner.set_state(Gst.State.NULL) self.showFileChooser() self.record.set_label(Gtk.STOCK_MEDIA_RECORD) self.record.disconnect(self.stop_id) @@ -441,7 +447,9 @@ class PulseCasterUI: self.record.set_sensitive(True) def _update_time(self, *args): - if self.combiner.get_state()[1] == gst.STATE_NULL: + _state = Gst.State(Gst.State.NULL) + self.combiner.get_state(_state) + if _state == Gst.State.NULL: self.trayicon.set_tooltip_text('') self.trayicon.set_visible(False) return False |