Still trying to wrap my head around pipewire, but essentially I just want to enable the
/usr/share/pipewire/filter-chain/source-rnnoise.conf
(unmodified) file that ships with Pipewire on Fedora.
Basics:
pipewire --version
pipewire
Compiled with libpipewire 1.0.7
Linked with libpipewire 1.0.7
I am trying to follow best practices, so I copied the file to ~/.config/pipewire/filter-chain.conf.d/source-rnnoise.conf
.
I has some issues when testing the file directly, and ended up installing a copr in order get the correct ladspa library.
sudo dnf install --enablerepo=copr:copr.fedorainfracloud.org:ycollet:audinux ladspa-noise-suppression-for-voice
So far so good. When testing the filter file directly, this happens (also weirdly I had to use absolute paths), even though the Native module is loaded.
rijnhard@elite-rijn:~$ pipewire -vvvc /home/rijnhard/.config/pipewire/filter-chain.conf.d/source-rnnoise.conf
[E][19195.049541] pw.core | [ core.c: 373 core_new()] 0x55f27fc36380: can't find protocol 'PipeWire:Protocol:Native': Operation not supported
[E][19195.049571] mod.filter-chain | [module-filter-ch: 3099 pipewire__module_init()] can't connect: Operation not supported
rijnhard@elite-rijn:~$ pw-cli info libpipewire-module-protocol-native
id: 2
permissions: r--m-
type: PipeWire:Interface:Module/3
name: "libpipewire-module-protocol-native"
filename: "/usr/lib64/pipewire-0.3/libpipewire-module-protocol-native.so"
args: "{
# List of server Unix sockets, and optionally permissions
#sockets = [ { name = "pipewire-0" }, { name = "pipewire-0-manager" } ]
}"
* properties:
* module.name = "libpipewire-module-protocol-native"
* object.id = "2"
* object.serial = "2"
* module.author = "Wim Taymans <wim.taymans@gmail.com>"
* module.description = "Native protocol using unix sockets"
* module.version = "1.0.7"
rijnhard@elite-rijn:~$ pw-cli list-objects | grep -i protocol
module.name = "libpipewire-module-protocol-native"
pipewire.protocol = "protocol-native"
pipewire.protocol = "protocol-native"
pipewire.protocol = "protocol-native"
pipewire.protocol = "protocol-native"
pipewire.protocol = "protocol-native"
pipewire.protocol = "protocol-native"
pipewire.protocol = "protocol-native"
pipewire.protocol = "protocol-native"
But by default it seems pipewire doesn’t load /usr/share/pipewire/filter-chain.conf
.
It feels like I’m missing something obvious, because:
- Why is running the filter directly breaking?
- Why isn’t it loading the filters by default?