Spaces:
Runtime error
Runtime error
from abc import ABCMeta, abstractmethod | |
from pyglet import event | |
from pyglet.util import with_metaclass | |
class DeviceState: | |
ACTIVE = "active" | |
DISABLED = "disabled" | |
MISSING = "missing" | |
UNPLUGGED = "unplugged" | |
class DeviceFlow: | |
OUTPUT = "output" | |
INPUT = "input" | |
INPUT_OUTPUT = "input/output" | |
class AudioDevice: | |
"""Base class for a platform independent audio device. | |
_platform_state and _platform_flow is used to make device state numbers.""" | |
_platform_state = {} # Must be defined by the parent. | |
_platform_flow = {} # Must be defined by the parent. | |
def __init__(self, dev_id, name, description, flow, state): | |
self.id = dev_id | |
self.flow = flow | |
self.state = state | |
self.name = name | |
self.description = description | |
def __repr__(self): | |
return "{}(name={}, state={}, flow={})".format( | |
self.__class__.__name__, self.name, self._platform_state[self.state], self._platform_flow[self.flow]) | |
class AbstractAudioDeviceManager(with_metaclass(ABCMeta, event.EventDispatcher, object)): | |
def __del__(self): | |
"""Required to remove handlers before exit, as it can cause problems with the event system's weakrefs.""" | |
self.remove_handlers(self) | |
def get_default_output(self): | |
"""Returns a default active output device or None if none available.""" | |
pass | |
def get_default_input(self): | |
"""Returns a default active input device or None if none available.""" | |
pass | |
def get_output_devices(self): | |
"""Returns a list of all active output devices.""" | |
pass | |
def get_input_devices(self): | |
"""Returns a list of all active input devices.""" | |
pass | |
def get_all_devices(self): | |
"""Returns a list of all audio devices, no matter what state they are in.""" | |
pass | |
def on_device_state_changed(self, device, old_state, new_state): | |
"""Event, occurs when the state of a device changes, provides old state and new state.""" | |
pass | |
def on_device_added(self, device): | |
"""Event, occurs when a new device is added to the system.""" | |
pass | |
def on_device_removed(self, device): | |
"""Event, occurs when an existing device is removed from the system.""" | |
pass | |
def on_default_changed(self, device): | |
"""Event, occurs when the default audio device changes.""" | |
pass | |
AbstractAudioDeviceManager.register_event_type('on_device_state_changed') | |
AbstractAudioDeviceManager.register_event_type('on_device_added') | |
AbstractAudioDeviceManager.register_event_type('on_device_removed') | |
AbstractAudioDeviceManager.register_event_type('on_default_changed') | |