コード例 #1
0
 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)
コード例 #2
0
    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
コード例 #3
0
    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
コード例 #4
0
    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)
コード例 #5
0
    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)
コード例 #6
0
 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)
コード例 #7
0
 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())
コード例 #8
0
 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))