filter-chain rejects lv2 with HTTPS URIs
- PipeWire version (
pipewire --version
):
Compiled with libpipewire 0.3.59
Linked with libpipewire 0.3.59
- Distribution and distribution version (
PRETTY_NAME
from/etc/os-release
): Arch Linux - Desktop Environment: KDE Plasma
- Kernel version (
uname -r
): 6.0.2-arch1-1
Description of Problem:
I was trying to create a noise filter for audio output as I have to listen through some lessons with terrible sound quality.
The filter has an lv2 plugin in the chain, namely noise-suppression-for-voice
,
that has HTTPS as its URI scheme, in constrast with the more typical HTTP like what both Calf and LSP have.
When I run PipeWire with said config the service fails to start. And when I don't use said plugin I don't see a problem with it.
Said plugin can be listed with lv2ls
and queried upon with lv2info
, so I had to check the journal logs of PipeWire and it shows these
error messages.
Oct 19 15:10:57 yakomachine pipewire[19363]: error: attempt to map invalid URI `https'
Oct 19 15:10:57 yakomachine pipewire[19363]: default: invalid URI https
How Reproducible:
Using version 1.03
of noise-suppression-for-voice
and the following config file with PipeWire.
context.modules = [
{ name = libpipewire-module-filter-chain
args = {
node.description = "Noise Canceling sink"
media.name = "Noise Canceling sink"
filter.graph = {
nodes = [
{
type = lv2
name = rnnoise
plugin = "https://github.com/werman/noise-suppression-for-voice"
label = noise_suppressor
control = {
"VAD Threshold (%)" 0.6
"VAD Grace Period (ms)" 200
"Retroactive VAD Grace (ms)" 0
}
}
]
}
capture.props = {
node.name = "effect_input.rnnoise"
media.class = Audio/Sink
audio.channels = 2
}
playback.props = {
node.name = "effect_output.rnnoise"
node.passive = true
audio.channels = 2
}
}
}
]
Steps to Reproduce:
- Copy the config to a PipeWire configuration directory.
- Start PipeWire with the new config.
- It ends in failure.
- Check the unit logs through
journalctl
to see what happened.
Actual Results:
PipeWire is not available and its unit log displays these error messages.
Oct 19 15:10:57 yakomachine pipewire[19363]: error: attempt to map invalid URI `https'
Oct 19 15:10:57 yakomachine pipewire[19363]: default: invalid URI https
Oct 19 15:10:57 yakomachine pipewire[19363]: mod.filter-chain: can't load graph: Invalid argument
Oct 19 15:10:57 yakomachine pipewire[19363]: pw.conf: 0x555c48bf1280: could not load mandatory module "libpipewire-module-filter-chain": Invalid argument
Oct 19 15:10:57 yakomachine pipewire[19363]: default: failed to create context: Invalid argument
Expected Results:
Have a new audio sink with the noise suppression filter running on it.