Get rid of current volume element (fixes #115)
This commit is contained in:
parent
ef29a82626
commit
11aa75796c
@ -38,7 +38,6 @@ class GStreamer(ThreadingActor):
|
|||||||
self._source = None
|
self._source = None
|
||||||
self._tee = None
|
self._tee = None
|
||||||
self._uridecodebin = None
|
self._uridecodebin = None
|
||||||
self._volume = None
|
|
||||||
self._outputs = []
|
self._outputs = []
|
||||||
self._handlers = {}
|
self._handlers = {}
|
||||||
|
|
||||||
@ -51,14 +50,12 @@ class GStreamer(ThreadingActor):
|
|||||||
description = ' ! '.join([
|
description = ' ! '.join([
|
||||||
'uridecodebin name=uri',
|
'uridecodebin name=uri',
|
||||||
'audioconvert name=convert',
|
'audioconvert name=convert',
|
||||||
'volume name=volume',
|
|
||||||
'tee name=tee'])
|
'tee name=tee'])
|
||||||
|
|
||||||
logger.debug(u'Setting up base GStreamer pipeline: %s', description)
|
logger.debug(u'Setting up base GStreamer pipeline: %s', description)
|
||||||
|
|
||||||
self._pipeline = gst.parse_launch(description)
|
self._pipeline = gst.parse_launch(description)
|
||||||
self._tee = self._pipeline.get_by_name('tee')
|
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 = self._pipeline.get_by_name('uri')
|
||||||
|
|
||||||
self._uridecodebin.connect('notify::source', self._on_new_source)
|
self._uridecodebin.connect('notify::source', self._on_new_source)
|
||||||
@ -247,7 +244,14 @@ class GStreamer(ThreadingActor):
|
|||||||
|
|
||||||
:rtype: int in range [0..100]
|
: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):
|
def set_volume(self, volume):
|
||||||
"""
|
"""
|
||||||
@ -257,7 +261,11 @@ class GStreamer(ThreadingActor):
|
|||||||
:type volume: int
|
:type volume: int
|
||||||
:rtype: :class:`True` if successful, else :class:`False`
|
: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
|
return True
|
||||||
|
|
||||||
def set_metadata(self, track):
|
def set_metadata(self, track):
|
||||||
|
|||||||
@ -17,4 +17,4 @@ class LocalOutput(BaseOutput):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
def describe_bin(self):
|
def describe_bin(self):
|
||||||
return 'autoaudiosink'
|
return 'volume ! autoaudiosink'
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user