def set_mixer_src(self, target, src, db): offset = FFMixerRegs.calculate_src_offset(self.__spec, target, src) val = self.__build_val_from_db(db) data = pack('<I', val) req = Hinawa.FwReq() req.transaction(self.get_node(), Hinawa.FwTcode.WRITE_BLOCK_REQUEST, self.__regs[1] + offset, len(data), data) self.__mixer_cache[offset // 4] = val self.__write_cache_to_file()
def __create_mixer_initial_cache(self): targets = self.get_mixer_labels() srcs = self.get_mixer_src_labels() cache = [0x00] * (len(targets) * 2 * self.__spec['avail']) for i, target in enumerate(targets): for src in srcs: # Supply diagonal stream sources to each mixers. if src != 'stream-{0}'.format(i + 1): val = self.__MUTE_VAL else: val = self.__ZERO_VAL offset = FFMixerRegs.calculate_src_offset( self.__spec, target, src) cache[offset // 4] = val return cache
def get_mixer_src(self, target, src): offset = FFMixerRegs.calculate_src_offset(self.__spec, target, src) return self.__parse_val_to_db(self.__mixer_cache[offset // 4])
def get_mixer_src_labels(self): return FFMixerRegs.get_mixer_src_labels(self.__spec)