Commit graph

3461 commits

Author SHA1 Message Date
Wim Taymans
170294d7ac pipewire-pulse: add zeroconf module 2021-05-14 11:39:44 +02:00
Wim Taymans
5c152bab23 zeroconf: improve stream properties 2021-05-14 11:19:02 +02:00
Wim Taymans
a428228ebf pulse-tunnel: handle holes in record stream
Holes in the stream return a NULL ptr. Write silence to the
ringbuffer in that case.
2021-05-14 09:51:51 +02:00
Wim Taymans
9b48c6f3ea filter-chain: make sure res is always set 2021-05-14 09:48:13 +02:00
Wim Taymans
0ff1d1e4cb zeroconf-discover: use pw_properties_serialize_dict 2021-05-14 09:09:48 +02:00
Wim Taymans
6744934734 zeroconf: add avahi zerconf discover module
Discovers remote sinks and sources and load the tunnel module to
make a local sink and source for them.
2021-05-14 09:09:48 +02:00
Wim Taymans
59842b3bd6 make and use pw_properties_serialize_dict()
Remove the multiple other variants and make a better one. Flags are for
future options for escaping and formatting.
2021-05-14 09:08:46 +02:00
Wim Taymans
577ad0c73a conf: improve config error handling
Make the config parser return the amount of parsed items.
Fail to create a context when parsing the config fails.
Log the number of items parsed from the config.
2021-05-13 15:09:57 +02:00
Wim Taymans
09cba1e4de module-pulse-tunnel: use SPA_UNLIKELY instead of PA_UNLIKELY 2021-05-13 14:53:39 +02:00
Wim Taymans
a6c0e35b13 filter-chain: reset graph in suspend
To make sure we don't end up with samples from before the suspend.
2021-05-12 20:48:00 +02:00
Wim Taymans
32688d7fc6 filter-chain: add dolby surround sink
Encodes a 6 channel surround sound stream into dolby surround.
2021-05-12 20:22:40 +02:00
Wim Taymans
e94a977dcd filter-chain: Support null inputs/outputs
Handle null inputs by ignoring the port
Handle null output by clearing the buffer.
Make sure we only have one input and output linked.
2021-05-12 20:17:15 +02:00
Wim Taymans
2017de6da8 filter-chain: add copy function 2021-05-12 20:16:53 +02:00
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