Commit graph

6281 commits

Author SHA1 Message Date
Wim Taymans
4bf526ddf4 module-netjack2: handle NULL socket
The socket might be NULL when it got destroyed due to an error.
2023-06-09 20:49:27 +02:00
Wim Taymans
4e070c90aa module-profiler: ignore peer targets
Only log the targets of the node, ignoring the peers of the driver or
else we will log some nodes twice.

Fixes #3278
2023-06-09 17:06:48 +02:00
Wim Taymans
f0e8b95d76 module-netjack2: do some more checks
Check packet size and avoid overflows when receiving data.
2023-06-09 13:37:39 +02:00
Wim Taymans
d35e514549 module-netjack2: samples are transmitted in little endian
So swap them on big endian.
2023-06-09 12:26:39 +02:00
Wim Taymans
9dd5bab535 module-netjack2: add MIDI send and receive 2023-06-08 16:38:53 +02:00
Wim Taymans
c2860477c3 module-raop: add default 1 sec of latency
Make NTP timestamps based on CLOCK_REALTIME.

Handle socket errors.

Some devices want at least 1 second of latency between RTP and NTP
timestamps or they stay silent. A a raop.latency.ms property for this
purpose that defaults to 1 second.

It is said that all devices seem to add 250ms of extra playback delay,
so include that into the delay reporting.

Fixes #3247
2023-06-07 16:51:34 +02:00
Wim Taymans
9a93a60fbf raop: log last error on connection failure 2023-06-07 16:45:56 +02:00
Wim Taymans
de211f4e89 examples: add another example
See #3272
2023-06-06 19:50:58 +02:00
Wim Taymans
14fd7f7bf7 module-raop: fix deduplication
Also check duplicate entries in the resolve callback because we might
not have created a tunnel earlier.
2023-06-06 10:23:52 +02:00
Wim Taymans
04e17a8b1c module-netjack2: handle driver reconnect
Let the driver keep announcing.
Keep track of when a message was received in the driver. If we don't
receive anything for a while, reconnect.

Don't connect twide in the manager.
2023-06-05 13:30:16 +02:00
Wim Taymans
8db98b114d module-protocol-native: close fds from zombie clients
When a client is zombie, close the fds we got in the discarded message
or else we leak them.

See #1840
2023-06-05 13:28:04 +02:00
Wim Taymans
a70a89289b module-netjack2: fix driver name 2023-06-05 10:36:30 +02:00
Wim Taymans
f2a0df9ac2 module-netjack2: lock and force rate and quantum 2023-06-05 10:36:08 +02:00
Wim Taymans
407ee3940c module-netjack2: set latency param 2023-06-05 10:21:18 +02:00
Wim Taymans
7de7a620f3 module-ffado: fix latency configuration
Don't deref the port before we created it.
2023-06-05 10:21:18 +02:00
Wim Taymans
cc82715325 module-netjack2: refactor
Move common code to a separate file.
2023-06-05 10:20:43 +02:00
Wim Taymans
7bd74a67f4 module-netjack2: use frames from graph and sync
The params are the initial period_size, use the ones used to
encode the packets.
2023-06-02 15:43:34 +02:00
Wim Taymans
629e322fac module-netjack2: clear empty buffers 2023-06-02 15:09:31 +02:00
Wim Taymans
287566937e module-netjack2: improve node names 2023-06-02 13:31:38 +02:00
Wim Taymans
2988d9c831 module-netjack2: small improvements
Improve node properties
Improve module parameters and docs
Send send and recv buffer sizes.
Stop follower on connection errors.
2023-06-02 13:24:49 +02:00
Wim Taymans
2d253de359 module-profiler: add per client xrun count in profiler data
So that pw-top can show the client xruns instead of the driver xruns
2023-06-02 13:23:55 +02:00
Wim Taymans
9727bf3c4b modules: fix some compiler warnings 2023-06-01 19:01:25 +02:00
Barnabás Pőcze
4e370151b0 pipewire: introspect: do not leave spa_param_infos uninitialized
`pw_reallocarray()` leaves the newly allocated storage (if any)
uninitialized, so fill the bytes of the new `spa_param_info` objects
with zeros in `pw_{node,port,device}_info_merge()` to avoid handing
out pointers to uninitialized storage.
2023-06-01 16:57:42 +00:00
Barnabás Pőcze
212c574821 pipewire: module-ffado-driver: don't have labels at the end
Labels are only allowed before statements before C23,
and clang does not support them as an extension in
gnu11 that pipewire uses, so add `break`s.
2023-06-01 16:56:59 +00:00
Wim Taymans
2cc0fe0b3c module-netjack2: add netjack2 manager
This module listens for messages from netjack2 drivers and makes a sink
and source filter to send and receive data from the remote driver.
2023-06-01 18:36:07 +02:00
Wim Taymans
f8aa18c88b module-netjack2: small improvements 2023-06-01 18:36:07 +02:00
Wim Taymans
52bc7451fd filter: add support for TRIGGER 2023-06-01 18:36:07 +02:00
Wim Taymans
991a1558dc module: add a netjack2 driver module
The module advertizes itself on multicast and will trigger a new client
in the netjack2 manager. Tested with jack2 and 'jack_load netmanager'.

The driver will receive and send data (no midi yet) from and to the
manager in sync with the manager, without resampling and with a fixed
latency.
2023-05-31 17:22:05 +02:00
Wim Taymans
d9e29e70f3 module-ffado: fix compilation with -UFASTPATH 2023-05-30 15:57:07 +02:00
Wim Taymans
149bb3eee8 module-ffado: set playback buffers as well 2023-05-29 09:17:08 +02:00
Wim Taymans
a4f6c02a7d modules-ffado: add properties 2023-05-28 19:17:41 +02:00
Wim Taymans
3c44634dd8 modules: add ffado driver module 2023-05-28 15:53:58 +02:00
Wim Taymans
2ee7996cf7 impl-node: improve stats
The signal_time of the driver is supposed to be the time when the
driver started, not when it was signaled the last time to complete
the graph. Remember the start time and override the signal time when
the graph completes.
2023-05-25 20:22:49 +02:00
Wim Taymans
3d68c7124d impl-node: drivers run remotely now
Remove some code now that drivers also run remotely.
2023-05-25 20:06:38 +02:00
Wim Taymans
a5b845650e remote-node: only signal graph end when profiling
Add a flag to the activation to mark the node as being profiled.
Only wake up the eventfd in remote-node when the profiler is running.

This keeps the server sleeping when remote nodes are driving and the
profiler is not running.
2023-05-24 22:40:28 +02:00
Wim Taymans
5fcc0e1181 filter: fix warning 2023-05-24 18:24:06 +02:00
Wim Taymans
8303082024 stream: do fast calls for the process function
We checked it while registering.
2023-05-24 18:01:41 +02:00
Wim Taymans
004d3d900a pulse-server: improve debug 2023-05-24 18:01:19 +02:00
Wim Taymans
3605eae6ad impl-node: fix compilation 2023-05-24 17:38:40 +02:00
Wim Taymans
2994c48702 impl-node: only copy relevant fields from target
We can't copy the link or active state.
2023-05-24 14:35:47 +02:00
Wim Taymans
894eeae03c impl-node: add id and name to pw_node_target
Make a copy of the node name into a statically allocated array. This is
for debugging purposes only but might crash if we do a name change while
the data thread is reading it.

Make it possible to do reposition on the client side by copying the id
to the target. The client side does not have a node in the target so we
can't deref it.
2023-05-24 14:05:03 +02:00
Bennett Hardwick
4843928370 Fix jackdbus-detect module name in comment 2023-05-24 11:44:09 +00:00
Sebastian Jaeckel
dfeacaafdd rtp-sap: use correct property key to get channel names 2023-05-24 08:32:42 +00:00
Sebastian Jaeckel
39d6e40abd rtp-sap,AES67: reorder sdp records to be compatible with Dante/AES67 devices
A software called `Dante Controller` is needed to configure Dante
devices (which also support AES67). This software is picky about the
order in which SDP records are received and parsed.

Changing the order or adding new records in between leads to faulty
display of our stream within `Dante Controller` (missing channel display
etc.) and the user is then unable to connect any Dante device to the
AES67 stream.
2023-05-24 08:32:42 +00:00
Sebastian Jaeckel
31ffa09c16 rtp-sap: use the ptime from the stream in the announcement and omit the decimal ms if they are 0 2023-05-24 08:32:42 +00:00
Sebastian Jaeckel
d08439316b rtp/stream: calculate and format the ptime property as float 2023-05-24 08:32:42 +00:00
Wim Taymans
b74f2e19a7 impl-node: remove duplicated fields
Move all of the info to trigger a node into the target so that
we can copy it around easily.
2023-05-23 16:46:30 +02:00
Wim Taymans
bb72e3bc00 gst: fill default stride in metadata
When there is no metadata on the buffer, use the default video stride
as the stride on the pipewire buffers instead of 0.

Fixes #3236
2023-05-23 09:00:30 +02:00
Wim Taymans
b8fe832188 impl-node: run the remote driver node logic remotely
Don't signal the pipewire daemon to run the driver. We can transfer the
complete driver state to the client and run everything there.
2023-05-22 17:10:01 +02:00
Wim Taymans
a46076b207 Revert "impl-node: run the remote driver node logic remotely"
This reverts commit 2f67a6a5b4.

This needs more work and makes easyeffects fail
2023-05-22 14:54:38 +02:00