Commit graph

2540 commits

Author SHA1 Message Date
Wim Taymans
25f4e38781 module-rtp: keep track who initiated the session 2023-03-09 13:14:22 +01:00
Wim Taymans
3b33098cd7 module-rtp: improve session setup 2023-03-09 13:14:22 +01:00
Wim Taymans
0885899b7a module-rtp: fix docs 2023-03-09 13:14:22 +01:00
Wim Taymans
9c45bb9c8d module-rtp: use default source.ip 2023-03-09 13:14:22 +01:00
Wim Taymans
933743581b module-rtp: fix rtp.media property
Use sess.media for the media type (audio/midi) because rtp.media is used
in the SDP to describe the media (midi and audio are both are audio).
2023-03-09 13:14:22 +01:00
Wim Taymans
9e67d6781d module-rtp: fix loading of source 2023-03-09 13:14:22 +01:00
Wim Taymans
be09198249 module-rtp: port source and sink to new stream 2023-03-09 13:14:22 +01:00
Wim Taymans
e8119cb087 docs: improve docs 2023-03-09 13:14:22 +01:00
Wim Taymans
3208677ec3 pipewire-pulse: port module-rtp-send
In addition to loading the rtp-sink module, we now also need to load the
SAP module to announce this stream with SAP.
2023-03-09 13:14:22 +01:00
Wim Taymans
77b7c3d180 pipewire-pulse: port module-rtp-recv
Use the new module-rtp-sap to listen and create RTP streams from
SAP.
2023-03-09 13:14:22 +01:00
Wim Taymans
9a6fa2e6a1 module-rtp: use new random functions 2023-03-09 13:14:22 +01:00
Wim Taymans
56d2e1e880 module-rtp: improve SSRC, seq and timestamp randomness 2023-03-09 13:14:22 +01:00
Wim Taymans
eca9bbf73b module-rtp-sap: handle session timeout
Handle module unload
2023-03-09 13:14:22 +01:00
Wim Taymans
de6f04a1ac module-rtp-sap: add default rules 2023-03-09 13:14:22 +01:00
Wim Taymans
104ecad44d module-rtp: fix SAP multicast send/recv 2023-03-09 13:14:22 +01:00
Wim Taymans
a015edb934 module-rtp: fix some memory leaks 2023-03-09 13:14:22 +01:00
Wim Taymans
e010559ffe module-rtp: don't autoconnect midi
Don't unload module for inactive source, we should signal the owner
of the module with a property update instead.
2023-03-09 13:14:22 +01:00
Wim Taymans
a48822c38a module-rtp: make source from module
Add match rules to SAP to decide when to announce and create RTP
streams.
Use SAP to load an RTP source.
Remove SAP code from RTP source.
2023-03-09 13:14:22 +01:00
Wim Taymans
cb1e5661dc move SAP in separate module
The idea is to have the rtp-source and rtp-sink be separate modules that
can be loaded a static ip/port as well.

The SAP module would then expose existing rtp-sinks or additionally load
rtp-sources based on SAP messages.

This makes things a bit more flexible when we also want to expose the
rtp-sink using zeroconf, for example.
2023-03-09 13:14:22 +01:00
Wim Taymans
7a31278511 module-rtp: improve properties and some cleanups 2023-03-09 13:14:22 +01:00
Wim Taymans
c46e021734 module-rtp: improve properties
Improve refclk and ts-offset handling.
Add some more properties to avahi
2023-03-09 13:14:22 +01:00
Wim Taymans
2c28047370 module-rtp: make the streams sink/source 2023-03-09 13:14:22 +01:00
Wim Taymans
03d11953a6 module-rtp: handle state of stream better
Don't try to read packets when the data port or stream is not
ready.
Don't send packets when the data port is not ready or the stream
is paused.
2023-03-09 13:14:21 +01:00
Wim Taymans
bf9236ec8d module-rtp: improve node name and description
Don't auto connect audio either. There are more meant as source/sink
pairs.
2023-03-09 13:14:21 +01:00
Wim Taymans
fcac5298b9 module-rtp: add and check session parameters
Only allow compatible sessions.
2023-03-09 13:14:21 +01:00
Wim Taymans
4dc3e0d967 module-rtp: add audio params to avahi txt 2023-03-09 13:14:21 +01:00
Wim Taymans
4507f7ab39 module-rtp: only create sessions with avahi 2023-03-09 13:14:21 +01:00
Wim Taymans
432f927da9 module-rtp: listen only for compatible sessions 2023-03-09 13:14:21 +01:00
Wim Taymans
4937da471f module-rtp: listen to all available session types 2023-03-09 13:14:21 +01:00
Wim Taymans
4ee9696548 module-rtp: improve session setup 2023-03-09 13:14:21 +01:00
Wim Taymans
94b67603e5 module-rtp: improve session setup 2023-03-09 13:14:21 +01:00
Wim Taymans
dda5ed696b module-rtp: fix sender timestamps 2023-03-09 13:14:21 +01:00
Wim Taymans
7c04b42e38 module-rtp: improve properties 2023-03-09 13:14:21 +01:00
Wim Taymans
3badf6f3ac module-rtp: move avahi in rtp-session
It needs to be there because we need to be able to relate
zeroconf entries to udp connections.
2023-03-09 13:14:21 +01:00
Wim Taymans
7da031c969 module-rtp: add new rtp-session module
The module uses the apple session setup for managing peer connections.

Make a generic rtp stream object, make midi and audio implementations.
2023-03-09 13:14:21 +01:00
Wim Taymans
2c4bd25a89 pulse-server: fix comments
128/48000 = 0.002666... so rounding to 2.7ms is more accurate.
2023-03-08 12:53:22 +01:00
Wim Taymans
ddbb54fd6f pulse-server: reduce min quantum to 128/48000
some games want 5ms latency and the 256/48000 previous min value was
5.3ms and just a little too high, reduce this because we probably can.
2023-03-08 11:10:39 +01:00
Wim Taymans
af91ae67de module-echo-cancel: improve docs 2023-03-08 09:58:21 +01:00
Wim Taymans
ee6866a947 pulse-server: add doc about pulse.cmd section 2023-03-08 09:28:44 +01:00
Wim Taymans
dd80b76cb0 pulse-server: escape module values
We need to unescape the module argument values, just like pulseaudio
does.  We might end up with invalid escape sequences for the JSON
parser.

Fixes #3071
2023-03-07 13:15:49 +01:00
Wim Taymans
7a923bc204 module-rtp-sink: use sess.media for media type
media.type is already taken.
2023-03-05 19:12:14 +01:00
Wim Taymans
a21da3802b client-node: the id must be strictly smaller than MAX_AREAS
.. or else it points past the allocated array.
2023-03-04 20:40:48 +01:00
Robert Rosengren
57a89e5723 module-rtp: Add configurable DSCP support
Add configurable DSCP support with the net.dscp option. Applying only on
RTP, not on SAP discovery.
2023-03-03 15:13:37 +00:00
Wim Taymans
5ab1d898ca impl-port: improve port properties
Move the port property logic from the adapter to the port itself.

The port was already doing some of the same work as a fallback but can
just as well do everything. This also makes things more unified when
there is no adapter used.
2023-03-02 12:35:11 +01:00
Wim Taymans
ab94a71e3c pulse-server: improve channel_map parsing
Add some more common channel name shortcuts supported by pulseaudio.
Make sure we match the full channel-name, not just the prefix.
Generate an invalid channel map when an invalid channel name was
given instead of a partial channel map.
2023-03-01 13:44:24 +01:00
Wim Taymans
8a24f58cd1 pulse-server: improve format parsing
The pulseaudio format should be parsed case insensitive.
Add some more pulseaudio supported formats.
2023-03-01 13:44:24 +01:00
Wim Taymans
03abce72e5 pulse-server: error on invalid format
When an invalid format is given as a module argument, generate an error.
2023-03-01 13:44:24 +01:00
Barnabás Pőcze
d776d378cd pipewire: module-protocol-simple: cast argument of accept4()
With glibc omitting the cast does not trigger a warning because
glibc uses GCC's `transparent_union` attribute. musl does not
do that, so to avoid getting warnings there, add the cast.

https://gcc.gnu.org/onlinedocs/gcc/Common-Type-Attributes.html#index-transparent_005funion-type-attribute
2023-02-25 20:21:45 +01:00
Wim Taymans
eb797cac48 pulse-server: improve FIX_ flag handling
When a stream uses the FIX_ flags it should negotiate to the format of
the sink or source it connects to. To do this, look up the sink or
source and look at the format, use this as the allowed format for the
stream when the FIX flags are set.

Make it still possible to override with with properties. Use
audio.position to make it possible to set a channelmap override.
2023-02-23 12:53:58 +01:00
Wim Taymans
ad6ab7e0b7 pulse-server: refactor channel position parsing 2023-02-23 12:39:36 +01:00