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
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
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