Commit graph

6309 commits

Author SHA1 Message Date
Wim Taymans 0999f3cf93 alsa-plugin: handle context create error 2021-05-10 13:28:36 +02:00
Wim Taymans 7b759e7961 filter-chain: remove some lines from the config 2021-05-10 13:11:36 +02:00
Wim Taymans 1bfde16a89 filter-chain: update properties on the right stream
The filter properties are on the input stream.
2021-05-10 11:29:43 +02:00
Wim Taymans 64f694c02f filter-chain: add ladspa header 2021-05-10 11:05:06 +02:00
Wim Taymans d69673816f filter-chain: use more convenient param Props field
Is more convenient for custom properties without an id.
2021-05-10 11:01:13 +02:00
Wim Taymans 4cde1182d4 spa: add params property
Some properties can be part of a params field in the Props object
and contain the string key and the pod value to be configured. This
is easier to use than using the regular id.

Add the fact that the property is also part of params in the PropInfo.
2021-05-10 11:01:13 +02:00
Wim Taymans 2414d3501c pulse-server: add ladspa sink and source
To make an rnnoise filtered source:

pactl load-module module-ladspa-source source_name=rnnoise_mic label=noise_suppressor_mono plugin=/usr/lib64/ladspa/ladspa/librnnoise_ladspa.so

To make an equalizer sink:

pactl load-module module-ladspa-sink sink_name=eq_out label=mbeq plugin=/usr/lib64/ladspa/mbeq_1197.so
2021-05-10 11:01:13 +02:00
Wim Taymans c73946a64f filter-chain: add rnnoise example source 2021-05-10 11:01:13 +02:00
Wim Taymans b2053b9d49 filter-chain: support absolute plugin path 2021-05-10 11:01:13 +02:00
Wim Taymans 00e85a252c filter-chain: add builtin plugins
Add a simple mixer builtin plugin.
Free memory on module unload.
2021-05-10 11:01:13 +02:00
Wim Taymans 3c7222d84b filter-chain: fix setting control values
Add support for getting the control ports from a node. Use this to
configure the control port values.
2021-05-10 11:01:13 +02:00
Wim Taymans aec4358d72 filter-chain: copy media name 2021-05-10 11:01:13 +02:00
Wim Taymans a595f88cf1 filter-chain: add example
run with pipewire -c filter-chain/demonic.conf
2021-05-10 11:01:13 +02:00
Wim Taymans f9a29c5424 filter-chain: use node name and port name for control
Address controls with node_name:port_name to access all properties
in the graph.
2021-05-10 11:01:13 +02:00
Wim Taymans 4d1fa14774 filter-chain: use the right index for notify ports 2021-05-10 11:01:13 +02:00
Wim Taymans 417a5779e7 filter-chain: use a port structure to hold port info 2021-05-10 11:01:13 +02:00
Wim Taymans ca9225b5aa filter-chain: use the right description when linking 2021-05-10 11:01:13 +02:00
Wim Taymans 641e685d5b filter-chain: add more debug 2021-05-10 11:01:13 +02:00
Wim Taymans 8ec0f1eb4b filter-chain: parse and handle links 2021-05-10 11:01:13 +02:00
Wim Taymans 4d680a816f filter-chain: use dependencies to build scheduling plan 2021-05-10 11:01:13 +02:00
Wim Taymans 2714ba47ac filter-chain: control is just an object 2021-05-10 11:01:13 +02:00
Wim Taymans 1088f875d4 filter-chain: add some more debug 2021-05-10 11:01:13 +02:00
Wim Taymans 5df221cf9a filter-chain: implement inputs and outputs
When inputs/outputs are specified, find the node:port and link them.
Fall back to the first/last node for input/output if no node is given.
Fall back to all input/output ports when no ports are given.
2021-05-10 11:01:12 +02:00
Wim Taymans aa0fdaf454 module-filter-chain: rename
This does not have to be ladspa specific so rename it.
2021-05-10 11:01:12 +02:00
Wim Taymans eaeb9e9b5d module-ladspa-filter: expose controls 2021-05-10 11:01:12 +02:00
Wim Taymans 3f5ebdedca module-ladspa-filter: change to graph syntax
Expand the syntax to allow a graph of nodes and links later.
2021-05-10 11:01:12 +02:00
Wim Taymans 22373de5b4 module-ladspa-filter: use custom keys and propinfo
Use custom keys and propinfo to map the name to the key. This allows
us to specify ranges and other context for the properties.
2021-05-10 11:01:12 +02:00
Wim Taymans 97002a4451 module-ladspa-filter: update props when they change 2021-05-10 11:01:12 +02:00
Wim Taymans 69d36675d1 modules: ladspa-filter improvements
Parse initial control values
Reset to default when value is null
Implement port selection by name.
2021-05-10 11:01:12 +02:00
Wim Taymans a36e5b2c0d modules: more ladspa improvements
Run multiple instances to fill requested channels.
Improve media name.
2021-05-10 11:01:12 +02:00
Wim Taymans 3272344df4 modules: parse and set control values 2021-05-10 11:01:12 +02:00
Wim Taymans 0a966d4637 modules: improvements 2021-05-10 11:01:12 +02:00
Wim Taymans 356c7ade1c modules: add begining of ladspa filter
Can be used to build chains or sink/source.
2021-05-10 11:01:12 +02:00
Wim Taymans d226a28b30 acp: reset soft_volume
Reset the software volume when initializing the device and when the
hardware volume is updated.

The software volume was set to 0 by default and if the session manager
did not change the volume enough to cause a software volume change,
it would remain 0 and there would be silence.

Also improve the debug a little.

See #1160 #1167 #1164 #1049 #1117
2021-05-10 10:50:42 +02:00
Tom A. Wagner eba38a33af readme: Link to Helvum for GUI tools 2021-05-10 06:51:02 +00:00
albanobattistella 3539b5ba12 Update it.po 2021-05-09 11:53:48 +00:00
Barnabás Pőcze 68f75bbd57 tools/pw-dump: fix parentheses around isatty() call
Previously,

  isatty(fileno(data.out) && getenv("NO_COLOR") == NULL))

would call `isatty()` with

  fileno(data.out) && getenv("NO_COLOR") == NULL

as its argument. This meant that, for example,

  NO_COLOR=1 pw-dump

would still produce colored output when run with
a TTY as its standard input.

Fix that by moving the parenthesis.

Fixes: af63d08453 ("tools/pw-dump: only print colors if we're connected to a terminal")
2021-05-08 03:57:34 +02:00
Wim Taymans 02decd9fba alsa: pause/resume when entering/exiting freewheel
When we start freewheeling, pause the device and resume when we
finish freewheel.
In freewheel mode, just discard samples in the sink and produce
silence in the source.
2021-05-07 11:51:22 +02:00
Wim Taymans a80ec36ad5 node-driver: run as fast as possible in freewheel mode 2021-05-07 11:50:55 +02:00
Wim Taymans 7c91be47fb module-profiler: stop when freewheeling 2021-05-07 10:12:16 +02:00
Wim Taymans 9ce87aacd2 module-profiler: avoid large stack alloc
If the profiler manages to fill the complete buffer, we would have 8MB
of data that we need to allocate on the stack. Don't do that and instead
use a preallocated buffer large enough to copy things into.
2021-05-07 09:58:10 +02:00
Wim Taymans 830f52cbb1 jack: join the freewheel group when freewheeling 2021-05-07 09:03:34 +02:00
Wim Taymans 888612dc0f conf: add freewheel driver
Add freewheel driver and enable freewheel mode on it.
2021-05-07 09:03:34 +02:00
Wim Taymans 5c41131d6d node-driver: support node.freewheel property
To activate freewheeling when initializing
2021-05-07 09:03:34 +02:00
Wim Taymans efc497a38a spa: make a new FREEWHEEL clock flag
When freewheeling, the clock is going faster than real time.
When freewheeling, skip samples in alsa sink/source.
2021-05-07 09:03:34 +02:00
Wim Taymans fab199d5b9 impl-node: make the group a string
We are currently using strings for the node group so actually store
this as a string or else all strings will end up in group 0.
2021-05-07 09:03:33 +02:00
Peter Hutterer cc4324cd30 spa/logger: only log in colors if we're logging to a tty 2021-05-07 06:57:31 +00:00
Peter Hutterer af63d08453 tools/pw-dump: only print colors if we're connected to a terminal
We don't want ansi escape codes in the output of `pw-dump > log`. And where
colors are needed after the fact, it's easy to just run `jq . $file`.
2021-05-07 06:57:31 +00:00
Davide Beatrici 65e14548a3 stream: include <pipewire/port.h> instead of <pipewire/pipewire.h>
<pipewire/pipewire.h> includes many headers, but we only need <pipewire/port.h>.
2021-05-07 06:57:06 +00:00
Peter Hutterer 4456fd3e18 doc: fix a few doxygen warnings about invalid arguments 2021-05-07 10:27:26 +10:00