diff --git a/mopidy/audio/mixers/__init__.py b/mopidy/audio/mixers/__init__.py deleted file mode 100644 index cf763de3..00000000 --- a/mopidy/audio/mixers/__init__.py +++ /dev/null @@ -1,21 +0,0 @@ -from __future__ import unicode_literals - -import gobject - -import pygst -pygst.require('0.10') -import gst # noqa - -from mopidy.audio.mixers.auto import AutoAudioMixer -from mopidy.audio.mixers.fake import FakeMixer - - -def register_mixer(mixer_class): - gobject.type_register(mixer_class) - gst.element_register( - mixer_class, mixer_class.__name__.lower(), gst.RANK_MARGINAL) - - -def register_mixers(): - register_mixer(AutoAudioMixer) - register_mixer(FakeMixer) diff --git a/mopidy/audio/mixers/auto.py b/mopidy/audio/mixers/auto.py deleted file mode 100644 index 01a16e42..00000000 --- a/mopidy/audio/mixers/auto.py +++ /dev/null @@ -1,77 +0,0 @@ -"""Mixer element that automatically selects the real mixer to use. - -Set the :confval:`audio/mixer` config value to ``autoaudiomixer`` to use this -mixer. -""" - -from __future__ import unicode_literals - -import logging - -import pygst -pygst.require('0.10') -import gst # noqa - - -logger = logging.getLogger(__name__) - - -# TODO: we might want to add some ranking to the mixers we know about? -class AutoAudioMixer(gst.Bin): - __gstdetails__ = ( - 'AutoAudioMixer', - 'Mixer', - 'Element automatically selects a mixer.', - 'Mopidy') - - def __init__(self): - gst.Bin.__init__(self) - mixer = self._find_mixer() - if mixer: - self.add(mixer) - logger.debug('AutoAudioMixer chose: %s', mixer.get_name()) - else: - logger.debug('AutoAudioMixer did not find any usable mixers') - - def _find_mixer(self): - registry = gst.registry_get_default() - - factories = registry.get_feature_list(gst.TYPE_ELEMENT_FACTORY) - factories.sort(key=lambda f: (-f.get_rank(), f.get_name())) - - for factory in factories: - # Avoid sink/srcs that implement mixing. - if factory.get_klass() != 'Generic/Audio': - continue - # Avoid anything that doesn't implement mixing. - elif not factory.has_interface('GstMixer'): - continue - - if self._test_mixer(factory): - return factory.create() - - return None - - def _test_mixer(self, factory): - element = factory.create() - if not element: - return False - - try: - result = element.set_state(gst.STATE_READY) - if result != gst.STATE_CHANGE_SUCCESS: - return False - - # Trust that the default device is sane and just check tracks. - return self._test_tracks(element) - finally: - element.set_state(gst.STATE_NULL) - - def _test_tracks(self, element): - # Only allow elements that have a least one output track. - flags = gst.interfaces.MIXER_TRACK_OUTPUT - - for track in element.list_tracks(): - if track.flags & flags: - return True - return False diff --git a/mopidy/audio/mixers/fake.py b/mopidy/audio/mixers/fake.py deleted file mode 100644 index 404f6298..00000000 --- a/mopidy/audio/mixers/fake.py +++ /dev/null @@ -1,50 +0,0 @@ -"""Fake mixer for use in tests. - -Set the :confval:`audio/mixer:` config value to ``fakemixer`` to use this -mixer. -""" - -from __future__ import unicode_literals - -import gobject - -import pygst -pygst.require('0.10') -import gst # noqa - -from mopidy.audio.mixers import utils - - -class FakeMixer(gst.Element, gst.ImplementsInterface, gst.interfaces.Mixer): - __gstdetails__ = ( - 'FakeMixer', - 'Mixer', - 'Fake mixer for use in tests.', - 'Mopidy') - - track_label = gobject.property(type=str, default='Master') - track_initial_volume = gobject.property(type=int, default=0) - track_min_volume = gobject.property(type=int, default=0) - track_max_volume = gobject.property(type=int, default=100) - track_num_channels = gobject.property(type=int, default=2) - track_flags = gobject.property(type=int, default=( - gst.interfaces.MIXER_TRACK_MASTER | gst.interfaces.MIXER_TRACK_OUTPUT)) - - def list_tracks(self): - track = utils.create_track( - self.track_label, - self.track_initial_volume, - self.track_min_volume, - self.track_max_volume, - self.track_num_channels, - self.track_flags) - return [track] - - def get_volume(self, track): - return track.volumes - - def set_volume(self, track, volumes): - track.volumes = volumes - - def set_record(self, track, record): - pass diff --git a/mopidy/audio/mixers/utils.py b/mopidy/audio/mixers/utils.py deleted file mode 100644 index b3b08f19..00000000 --- a/mopidy/audio/mixers/utils.py +++ /dev/null @@ -1,38 +0,0 @@ -from __future__ import unicode_literals - -import gobject - -import pygst -pygst.require('0.10') -import gst # noqa - - -def create_track(label, initial_volume, min_volume, max_volume, - num_channels, flags): - - class Track(gst.interfaces.MixerTrack): - def __init__(self): - super(Track, self).__init__() - self.volumes = (initial_volume,) * self.num_channels - - @gobject.property - def label(self): - return label - - @gobject.property - def min_volume(self): - return min_volume - - @gobject.property - def max_volume(self): - return max_volume - - @gobject.property - def num_channels(self): - return num_channels - - @gobject.property - def flags(self): - return flags - - return Track()