def on_source_info(self, sink): index = int(sink.index) name = in_unicode(sink.name) muted = (sink.mute == 1) volume = sink.volume.getVolumes() active_port = sink.active_port ports = sink.ports props = sink.propDict() if "device.class" in props.keys() and props["device.class"] == "monitor": return self.dbus.source_info(index, name, muted, volume, props, ports, active_port)
def pa_module_info_cb(self, context, pa_module_info, index, user_data): # print ("pa_module_info", pa_module_info, index) if pa_module_info: self.loaded_modules[int(pa_module_info.contents.index)] = in_unicode(pa_module_info.contents.name) if in_unicode(pa_module_info.contents.name) == "module-ladspa-sink": self.receiver.module_info(int(pa_module_info.contents.index), in_unicode(pa_module_info.contents.name), in_unicode(pa_module_info.contents.argument), in_unicode(pa_module_info.contents.n_used), in_unicode(pa_module_info.contents.auto_unload)) # Restore ladspa-effects moved = [] for values in self.sink_inputs_to_restore: sink_input = values[0] parameters = values[1] if str(pa_module_info.contents.argument) == parameters: for sink in list(self.sinks.values()): if sink.owner_module == int(pa_module_info.contents.index): self.pulse_move_sink_input(sink_input.index, int(sink.index)) moved.append(values) for m in moved: self.sink_inputs_to_restore.remove(values) return
def pa_module_info_cb(self, context, pa_module_info, index, user_data): # print ("pa_module_info", pa_module_info, index) if pa_module_info: self.loaded_modules[int( pa_module_info.contents.index)] = in_unicode( pa_module_info.contents.name) if in_unicode( pa_module_info.contents.name) == "module-ladspa-sink": self.receiver.module_info( int(pa_module_info.contents.index), in_unicode(pa_module_info.contents.name), in_unicode(pa_module_info.contents.argument), in_unicode(pa_module_info.contents.n_used), in_unicode(pa_module_info.contents.auto_unload)) # Restore ladspa-effects moved = [] for values in self.sink_inputs_to_restore: sink_input = values[0] parameters = values[1] if str(pa_module_info.contents.argument) == parameters: for sink in list(self.sinks.values()): if sink.owner_module == int( pa_module_info.contents.index): self.pulse_move_sink_input( sink_input.index, int(sink.index)) moved.append(values) for m in moved: self.sink_inputs_to_restore.remove(values) return
def pa_create_monitor_for_source(self, index, source, name, force = False): if not index in self.monitor_sources or force : # Create new stream samplespec = pa_sample_spec() samplespec.channels = 1 samplespec.format = PA_SAMPLE_FLOAT32LE samplespec.rate = self._meter_rate pa_stream = pa_stream_new(self._context, as_p_char("Veromix source peak detect"), samplespec, None) pa_stream_set_read_callback(pa_stream, self._pa_source_stream_request_cb, index) pa_stream_set_suspended_callback(pa_stream, self._pa_stream_notify_cb, None) device = pa_xstrdup(as_p_char(in_unicode(source.name))) pa_stream_connect_record(pa_stream, device, None, PA_STREAM_PEAK_DETECT) self.monitor_sources[float(index)] = pa_stream source.set_has_monitor(True) self.receiver.source_info(source)
def pa_create_monitor_for_source(self, index, source, name, force=False): if not index in self.monitor_sources or force: # Create new stream samplespec = pa_sample_spec() samplespec.channels = 1 samplespec.format = PA_SAMPLE_FLOAT32LE samplespec.rate = self._meter_rate pa_stream = pa_stream_new(self._context, as_p_char("Veromix source peak detect"), samplespec, None) pa_stream_set_read_callback(pa_stream, self._pa_source_stream_request_cb, index) pa_stream_set_suspended_callback(pa_stream, self._pa_stream_notify_cb, None) device = pa_xstrdup(as_p_char(in_unicode(source.name))) pa_stream_connect_record(pa_stream, device, None, PA_STREAM_PEAK_DETECT) self.monitor_sources[float(index)] = pa_stream source.set_has_monitor(True) self.receiver.source_info(source)
def on_sink_info(self, sink): index = int(sink.index) name = in_unicode(sink.name) muted = (sink.mute == 1) volume = sink.volume.getVolumes() self.dbus.sink_info(index, name, muted, volume, sink.propDict(), sink.ports, sink.active_port)
def on_source_output_info(self, sink): index = int(sink.index) name = in_unicode(sink.name) if sink.resample_method != "peaks": self.dbus.source_output_info(index, name, sink.propDict())
def on_module_info(self, index, name, argument, n_used, auto_unload): self.dbus.module_info(index, in_unicode(name), in_unicode(argument), in_unicode(n_used), in_unicode(auto_unload))