Hello, I nowadays use module-loopback on a daily basis, and I thought it would be nice to provide a GUI (in pavucontrol) for configuring loopbacks. For this I propose we create a new module: module-loopback-manager. The purpose of that module is to provide a client interface for managing loopbacks. Without such manager interface it's not possible to create loopbacks that stay around after reboot. Well, one could add module- loopback to default.pa, but that doesn't mesh well with dynamic hardware, and that's not doable from pavucontrol anyway. The new module would maintain a database of loopbacks, so that they can be recreated after a reboot.
The client interface would contain functionality for adding and removing loopbacks, and changing the parameters of existing loopbacks. A loopback object would have the following attributes (to be shown in "pactl list loopbacks"): Name: The identifier for the loopback. Description: A human-friendly description for UI labels. Source: The source name. Can also be unset, in which case the loopback should follow the default source setting. Sink: The sink name. Can also be unset, in which case the loopback should follow the default sink setting. Enabled: The user can temporarily disable a loopback without removing it altogether. Running: A boolean that is true when the loopback is running, and false when the loopback is stopped for whatever reason. The interface should also provide a human-friendly string explaining why the loopback is not running (the loopback could be disabled, the sink or source might not be present at the moment, or the sink or source might be suspended). Requested latency: The latency that has been requested by the user. Current latency: The current actual latency. Might be different than the requested latency, because the requested latency may be too low to work. Persistent: A boolean indicating whether the loopback will be restored after restarting PulseAudio. My plan is that loopbacks that are created through the manager interface are always persistent, and non-persistent loopbacks are only for loopbacks that are created by loading module-loopback. Source output index: When the loopback is running, it will have a source output associated with it. Sink input index: When the loopback is running, it will have a sink input associated with it. module-loopback index: When the loopback was created by loading module-loopback, this is the module index. A maximum latency attribute could be added later, which would prevent the loopback increasing the latency too much (at the cost of drop- outs). The pactl interface could look like this: pactl loopback add [--description=<description>] [--enabled=<enabled>] [--latency-msec=<latency>] <name> <source> <sink> pactl loopback remove <name> pactl loopback set-description <name> <description> pactl loopback set-source <name> <source> pactl loopback set-sink <name> <sink> pactl loopback set-enabled <name> <enabled>/toggle pactl loopback set-latency-msec <name> <latency> Any thoughts? Would this kind of addition be welcome? If you think that it's not worth having this feature, please say so, so that I don't spend too much effort on this. -- Tanu _______________________________________________ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss