From 11aa75796c7b08abd399aa403434f6dffb6b82cb Mon Sep 17 00:00:00 2001 From: Thomas Adamcik Date: Thu, 4 Aug 2011 00:51:26 +0200 Subject: [PATCH] Get rid of current volume element (fixes #115) --- mopidy/gstreamer.py | 18 +++++++++++++----- mopidy/outputs/local.py | 2 +- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/mopidy/gstreamer.py b/mopidy/gstreamer.py index edcb3084..4ded2f95 100644 --- a/mopidy/gstreamer.py +++ b/mopidy/gstreamer.py @@ -38,7 +38,6 @@ class GStreamer(ThreadingActor): self._source = None self._tee = None self._uridecodebin = None - self._volume = None self._outputs = [] self._handlers = {} @@ -51,14 +50,12 @@ class GStreamer(ThreadingActor): description = ' ! '.join([ 'uridecodebin name=uri', 'audioconvert name=convert', - 'volume name=volume', 'tee name=tee']) logger.debug(u'Setting up base GStreamer pipeline: %s', description) self._pipeline = gst.parse_launch(description) self._tee = self._pipeline.get_by_name('tee') - self._volume = self._pipeline.get_by_name('volume') self._uridecodebin = self._pipeline.get_by_name('uri') self._uridecodebin.connect('notify::source', self._on_new_source) @@ -247,7 +244,14 @@ class GStreamer(ThreadingActor): :rtype: int in range [0..100] """ - return int(self._volume.get_property('volume') * 100) + mixers = self._pipeline.iterate_all_by_interface(gst.interfaces.Mixer) + try: + mixer = mixers.next() + except StopIteration: + return 0 + # FIXME this _will_ break for mixers that don't implement + # GstStreamVolume + return int(mixer.get_property('volume') * 100) def set_volume(self, volume): """ @@ -257,7 +261,11 @@ class GStreamer(ThreadingActor): :type volume: int :rtype: :class:`True` if successful, else :class:`False` """ - self._volume.set_property('volume', volume / 100.0) + mixers = self._pipeline.iterate_all_by_interface(gst.interfaces.Mixer) + for mixer in mixers: + # FIXME this _will_ break for mixers that don't implement + # GstStreamVolume + mixer.set_property('volume', volume / 100.0) return True def set_metadata(self, track): diff --git a/mopidy/outputs/local.py b/mopidy/outputs/local.py index 8101e026..62b26e3f 100644 --- a/mopidy/outputs/local.py +++ b/mopidy/outputs/local.py @@ -17,4 +17,4 @@ class LocalOutput(BaseOutput): """ def describe_bin(self): - return 'autoaudiosink' + return 'volume ! autoaudiosink'