Commit graph

3398 commits

Author SHA1 Message Date
Wim Taymans
fb6db4a1f9 pulse-server: clean up default format a little 2021-05-12 18:06:48 +02:00
Wim Taymans
ab9023f752 pulse-server: improve module argument parsing
ticks also delimit strings.
Unescape values.

Fixes #1173
2021-05-12 17:44:57 +02:00
Wim Taymans
3ae2b9e189 pulse-server: implement module-tunnel-sink/source
See #865
2021-05-12 17:00:45 +02:00
Wim Taymans
938e193987 pulse-tunnel: support node.target
Pass the node.target as the target on the remote.
Make a nicer stream name on the remote.
2021-05-12 16:49:19 +02:00
Wim Taymans
44f326013b module-pulse-tunner: add module to tunnel to PulseAudio
Add a module that can make a source or sink that tunnels audio
to or from a (remote) PulseAudio server.
2021-05-12 15:56:59 +02:00
Evgeniy Khramtsov
685ff1dc25 utils: provide strdupa() if not in libc
FreeBSD does not have strdupa(), provide it locally then.

Macro by: Gleb Popov <arrowd@FreeBSD.org>
2021-05-11 21:06:28 +03:00
Wim Taymans
c89af625db pipewire.conf: add dummy driver to pipewire.dummy group
So that we can have nodes join to the dummy driver group to let
them be scheduled by it.
2021-05-11 15:47:38 +02:00
Wim Taymans
92196787d6 stream: only trigger in queue when capturing
When we are a driver source, we can start processing of the
graph when we queue a buffer.

Don't do this when we are a driver sink.
2021-05-11 15:47:38 +02:00
Wim Taymans
80cf968ae7 stream: trigger the right process function
Depending on the direction of the stream.
2021-05-11 15:47:38 +02:00
Sanchayan Maity
d8f98df6ed pulse-server: Implement module-pipe-sink 2021-05-11 13:31:41 +05:30
Wim Taymans
c50c8d2be9 modules: fix some leaks in error paths
As found by coverity
2021-05-11 09:55:14 +02:00
Wim Taymans
bfbd6d74ef filter-chain: add biquads to filter-chain
Add some biquad filters to the builtin filters.
Add an example 6 band equalizer sink filter chain.
2021-05-10 18:11:20 +02:00
George Kiagiadakis
8911e22793 pipewiresink: release manually acquired buffers back to the pool
When we manually acquire buffers from the pool, we never release them.
But because gst_buffer_pool_acquire_buffer() adds a reference to the pool,
this leaks the pool eventually.

To fix this, just unref the buffer after it has been sent. This releases
it back to the pool and unrefs the pool.

This has no significant effect to the stream, since the underlying
pw buffers are actually pooled in the pw_stream. It just prevents leaking.
2021-05-10 17:25:57 +03:00
George Kiagiadakis
b86e5cabfa pipewiresink: use all the available dest memory when copying buffer
When pipewiresink needs to copy data, it has to resize the destination
buffer (to a smaller size) in order to send the correct data size to
pipewire. When this dest buffer is reused later, it will still have
this smaller size as its total size and the copy may discard data
from upstream if the new upstream buffer is bigger than the last one
that was copied on the same dest buffer.
2021-05-10 17:12:12 +03: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
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
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
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
888612dc0f conf: add freewheel driver
Add freewheel driver and enable freewheel mode on it.
2021-05-07 09:03:34 +02:00