blob: 326e7a5bd6614cad58b3d5a9a6b036b840513009 (
plain)
- #!/usr/bin/python3
- import time, logging
- from gi.repository import GLib, Gst
- from lib.config import Config
- class AudioMix(Gst.Bin):
- log = logging.getLogger('AudioMix')
- mixerpads = []
- def __init__(self):
- super().__init__()
- self.switch = Gst.ElementFactory.make('input-selector', 'switch')
- self.add(self.switch)
- self.switch.set_property('sync-streams', True)
- self.switch.set_property('sync-mode', 1) #GST_INPUT_SELECTOR_SYNC_MODE_CLOCK
- self.switch.set_property('cache-buffers', True)
- self.add_pad(
- Gst.GhostPad.new('src', self.switch.get_static_pad('src'))
- )
- def request_mixer_pad(self):
- mixerpad = self.switch.get_request_pad('sink_%u')
- self.mixerpads.append(mixerpad)
- self.log.info('requested mixerpad %u (named %s)', len(self.mixerpads) - 1, mixerpad.get_name())
- ghostpad = Gst.GhostPad.new(mixerpad.get_name(), mixerpad)
- self.add_pad(ghostpad)
- return ghostpad
- def set_active(self, target):
- self.log.info('switching to audiosource %u', target)
- self.switch.set_property('active-pad', self.mixerpads[target])
|