Remove injected gstreamer settings.

This commit is contained in:
Thomas Adamcik 2012-09-05 22:42:09 +02:00
parent fd3bbc899f
commit b0d6dc3e0c
2 changed files with 18 additions and 19 deletions

View File

@ -26,7 +26,7 @@ class GStreamer(ThreadingActor):
"""
def __init__(self, output=None, mixer=None, mixer_track=None):
def __init__(self):
super(GStreamer, self).__init__()
self._default_caps = gst.Caps("""
audio/x-raw-int,
@ -43,9 +43,8 @@ class GStreamer(ThreadingActor):
self._mixer = None
self._setup_pipeline()
self._setup_output(output or settings.OUTPUT)
self._setup_mixer(
mixer or settings.MIXER, mixer_track or settings.MIXER_TRACK)
self._setup_output()
self._setup_mixer()
self._setup_message_processor()
def _setup_pipeline(self):
@ -66,37 +65,35 @@ class GStreamer(ThreadingActor):
self._uridecodebin.connect('pad-added', self._on_new_pad,
self._pipeline.get_by_name('queue').get_pad('sink'))
def _setup_output(self, output_description):
def _setup_output(self):
# This will raise a gobject.GError if the description is bad.
self._output = gst.parse_bin_from_description(
output_description, ghost_unconnected_pads=True)
settings.OUTPUT, ghost_unconnected_pads=True)
self._pipeline.add(self._output)
gst.element_link_many(self._pipeline.get_by_name('queue'),
self._output)
logger.info('Output set to %s', output_description)
logger.info('Output set to %s', settings.OUTPUT)
def _setup_mixer(self, mixer_description, track_label):
if not mixer_description:
def _setup_mixer(self):
if not settings.MIXER:
logger.info('Not setting up mixer.')
return
# This will raise a gobject.GError if the description is bad.
mixerbin = gst.parse_bin_from_description(mixer_description, False)
mixerbin = gst.parse_bin_from_description(settings.MIXER, False)
# We assume that the bin will contain a single mixer.
mixer = mixerbin.get_by_interface('GstMixer')
if not mixer:
logger.warning('Did not find any mixers in %r',
mixer_description)
logger.warning('Did not find any mixers in %r', settings.MIXER)
return
if mixerbin.set_state(gst.STATE_READY) != gst.STATE_CHANGE_SUCCESS:
logger.warning('Setting mixer %r to READY failed.',
mixer_description)
logger.warning('Setting mixer %r to READY failed.', settings.MIXER)
return
track = self._select_mixer_track(mixer, track_label)
track = self._select_mixer_track(mixer, settings.MIXER_TRACK)
if not track:
logger.warning('Could not find usable mixer track.')
return

View File

@ -11,11 +11,13 @@ from tests import unittest, path_to_data_dir
'Our Windows build server does not support GStreamer yet')
class GStreamerTest(unittest.TestCase):
def setUp(self):
# TODO: does this modify global settings without reseting it?
# TODO: should use a fake backend stub for this test?
settings.BACKENDS = ('mopidy.backends.local.LocalBackend',)
settings.MIXER = 'fakemixer track_max_volume=65536'
settings.OUTPUT = 'fakesink'
self.song_uri = path_to_uri(path_to_data_dir('song1.wav'))
self.gstreamer = GStreamer(mixer='fakemixer track_max_volume=65536')
self.gstreamer = GStreamer()
def tearDown(self):
settings.runtime.clear()
def prepare_uri(self, uri):
self.gstreamer.prepare_change()