Module subsync.synchro.channels
Expand source code
import gizmo
from subsync.translations import _
class ChannelsMap(object):
def auto():
return AutoChannelsMap()
def all():
return AllChannelsMap()
def custom(cm):
return CustomChannelsMap(cm)
def deserialize(cm):
if cm == 'auto' or cm == None:
return AutoChannelsMap()
elif cm == 'all':
return AllChannelsMap()
else:
return CustomChannelsMap(cm)
def getChannelDescription(ch):
name = gizmo.AudioFormat.getChannelName(ch)
desc = gizmo.AudioFormat.getChannelDescription(ch)
if name and desc:
return '{} ({})'.format(desc, name)
else:
return 'channel {}'.format(ch)
def getChannelId(ch):
try:
return gizmo.AudioFormat.getChannelIdByName(ch) or int(ch)
except:
return None
def getChannelName(ch):
return gizmo.AudioFormat.getChannelName(ch) or str(ch)
def layoutToIds(layout):
i = 1
res = []
while i <= layout:
if i & layout:
res.append(i)
i <<= 1
return res
def __repr__(self):
return self.serialize()
class AutoChannelsMap(ChannelsMap):
type = 'auto'
centerId = gizmo.AudioFormat.getChannelIdByName('FC')
def getLayoutMap(self, layout):
layoutMap = CustomChannelsMap(layout)
if self.centerId in layoutMap.channels:
return CustomChannelsMap(self.centerId)
else:
return layoutMap
def getDescription(self):
return _('auto')
def serialize(self):
return 'auto'
class AllChannelsMap(ChannelsMap):
type = 'all'
def getLayoutMap(self, layout):
return CustomChannelsMap(layout)
def getDescription(self):
return _('all channels')
def serialize(self):
return 'all'
class CustomChannelsMap(ChannelsMap):
type = 'custom'
def __init__(self, channels):
if isinstance(channels, str):
names = channels.replace(' ', '').split(',')
chs = [ ChannelsMap.getChannelId(name.upper()) for name in names ]
self.channels = [ ch for ch in chs if ch ]
elif isinstance(channels, int):
self.channels = ChannelsMap.layoutToIds(channels)
else:
self.channels = channels
def getLayoutMap(self, layout):
cl = ChannelsMap.layoutToIds(layout)
intersection = set(self.channels).intersection(set(cl))
return CustomChannelsMap(intersection)
def getMap(self):
gain = 1.0 / len(self.channels)
return { (i, 1): gain for i in self.channels }
def getDescription(self, separator=', '):
names = [ ChannelsMap.getChannelName(ch) for ch in sorted(self.channels) ]
return separator.join(names)
def serialize(self):
return self.getDescription(separator=',')
Classes
class AllChannelsMap
-
Expand source code
class AllChannelsMap(ChannelsMap): type = 'all' def getLayoutMap(self, layout): return CustomChannelsMap(layout) def getDescription(self): return _('all channels') def serialize(self): return 'all'
Ancestors
Class variables
var type
Methods
def getDescription(self)
-
Expand source code
def getDescription(self): return _('all channels')
def getLayoutMap(self, layout)
-
Expand source code
def getLayoutMap(self, layout): return CustomChannelsMap(layout)
def serialize(self)
-
Expand source code
def serialize(self): return 'all'
class AutoChannelsMap
-
Expand source code
class AutoChannelsMap(ChannelsMap): type = 'auto' centerId = gizmo.AudioFormat.getChannelIdByName('FC') def getLayoutMap(self, layout): layoutMap = CustomChannelsMap(layout) if self.centerId in layoutMap.channels: return CustomChannelsMap(self.centerId) else: return layoutMap def getDescription(self): return _('auto') def serialize(self): return 'auto'
Ancestors
Class variables
var centerId
var type
Methods
def getDescription(self)
-
Expand source code
def getDescription(self): return _('auto')
def getLayoutMap(self, layout)
-
Expand source code
def getLayoutMap(self, layout): layoutMap = CustomChannelsMap(layout) if self.centerId in layoutMap.channels: return CustomChannelsMap(self.centerId) else: return layoutMap
def serialize(self)
-
Expand source code
def serialize(self): return 'auto'
class ChannelsMap
-
Expand source code
class ChannelsMap(object): def auto(): return AutoChannelsMap() def all(): return AllChannelsMap() def custom(cm): return CustomChannelsMap(cm) def deserialize(cm): if cm == 'auto' or cm == None: return AutoChannelsMap() elif cm == 'all': return AllChannelsMap() else: return CustomChannelsMap(cm) def getChannelDescription(ch): name = gizmo.AudioFormat.getChannelName(ch) desc = gizmo.AudioFormat.getChannelDescription(ch) if name and desc: return '{} ({})'.format(desc, name) else: return 'channel {}'.format(ch) def getChannelId(ch): try: return gizmo.AudioFormat.getChannelIdByName(ch) or int(ch) except: return None def getChannelName(ch): return gizmo.AudioFormat.getChannelName(ch) or str(ch) def layoutToIds(layout): i = 1 res = [] while i <= layout: if i & layout: res.append(i) i <<= 1 return res def __repr__(self): return self.serialize()
Subclasses
Methods
def all()
-
Expand source code
def all(): return AllChannelsMap()
def auto()
-
Expand source code
def auto(): return AutoChannelsMap()
def custom(cm)
-
Expand source code
def custom(cm): return CustomChannelsMap(cm)
def deserialize(cm)
-
Expand source code
def deserialize(cm): if cm == 'auto' or cm == None: return AutoChannelsMap() elif cm == 'all': return AllChannelsMap() else: return CustomChannelsMap(cm)
def getChannelDescription(ch)
-
Expand source code
def getChannelDescription(ch): name = gizmo.AudioFormat.getChannelName(ch) desc = gizmo.AudioFormat.getChannelDescription(ch) if name and desc: return '{} ({})'.format(desc, name) else: return 'channel {}'.format(ch)
def getChannelId(ch)
-
Expand source code
def getChannelId(ch): try: return gizmo.AudioFormat.getChannelIdByName(ch) or int(ch) except: return None
def getChannelName(ch)
-
Expand source code
def getChannelName(ch): return gizmo.AudioFormat.getChannelName(ch) or str(ch)
def layoutToIds(layout)
-
Expand source code
def layoutToIds(layout): i = 1 res = [] while i <= layout: if i & layout: res.append(i) i <<= 1 return res
class CustomChannelsMap (channels)
-
Expand source code
class CustomChannelsMap(ChannelsMap): type = 'custom' def __init__(self, channels): if isinstance(channels, str): names = channels.replace(' ', '').split(',') chs = [ ChannelsMap.getChannelId(name.upper()) for name in names ] self.channels = [ ch for ch in chs if ch ] elif isinstance(channels, int): self.channels = ChannelsMap.layoutToIds(channels) else: self.channels = channels def getLayoutMap(self, layout): cl = ChannelsMap.layoutToIds(layout) intersection = set(self.channels).intersection(set(cl)) return CustomChannelsMap(intersection) def getMap(self): gain = 1.0 / len(self.channels) return { (i, 1): gain for i in self.channels } def getDescription(self, separator=', '): names = [ ChannelsMap.getChannelName(ch) for ch in sorted(self.channels) ] return separator.join(names) def serialize(self): return self.getDescription(separator=',')
Ancestors
Class variables
var type
Methods
def getDescription(self, separator=', ')
-
Expand source code
def getDescription(self, separator=', '): names = [ ChannelsMap.getChannelName(ch) for ch in sorted(self.channels) ] return separator.join(names)
def getLayoutMap(self, layout)
-
Expand source code
def getLayoutMap(self, layout): cl = ChannelsMap.layoutToIds(layout) intersection = set(self.channels).intersection(set(cl)) return CustomChannelsMap(intersection)
def getMap(self)
-
Expand source code
def getMap(self): gain = 1.0 / len(self.channels) return { (i, 1): gain for i in self.channels }
def serialize(self)
-
Expand source code
def serialize(self): return self.getDescription(separator=',')