diff options
author | MaZderMind <peter@mazdermind.de> | 2014-09-18 11:49:36 +0200 |
---|---|---|
committer | MaZderMind <peter@mazdermind.de> | 2014-09-18 11:49:36 +0200 |
commit | 33ae6e1aac59b4d120ed3b8a319c6eb0ed5045cf (patch) | |
tree | 9bef83e15aea02c739c4a23aef47dd9e78bac53f /voctocore/lib/audiomix.py | |
parent | 1e8589e2895eec33ec344f60a9579b118e751312 (diff) |
enable audioswitch, use a payloader to transfer buffer timestamps through the shm-bridge and keep a/v sync intact
Diffstat (limited to 'voctocore/lib/audiomix.py')
-rw-r--r-- | voctocore/lib/audiomix.py | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/voctocore/lib/audiomix.py b/voctocore/lib/audiomix.py new file mode 100644 index 0000000..326e7a5 --- /dev/null +++ b/voctocore/lib/audiomix.py @@ -0,0 +1,36 @@ +#!/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]) |