Commit graph

6041 commits

Author SHA1 Message Date
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
Wim Taymans
79d1278b2e fix -UFASTPATH compilation 2023-05-22 11:30:38 +02:00
Wim Taymans
46add98c0a impl-node: remove warning 2023-05-22 11:06:49 +02:00
Wim Taymans
7ffe64f7af client-node: make old driver nodes work
Bump the client-node version because we use the writefd differently now.
Support driver nodes using the old version somewhat. The stats will be
wrong but then again, we don't have any flatpak driver nodes that could
use an older version.
2023-05-22 11:03:20 +02:00
Wim Taymans
0135a1fc05 client-node: signal graph complete
Use the writefd for waking up the server when the graph completed. Make
this emit the complete event so that the profiler can capture the
data.
2023-05-22 10:30:01 +02:00
Wim Taymans
5c7c12638d impl-node: do stats at the end of the cycle
For remote nodes we don't activate the server anymore so the stats
won't reach the server anyway. It's better to do them at the end of the
cycle again.
2023-05-22 10:29:59 +02:00
Wim Taymans
2f67a6a5b4 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 10:29:13 +02:00
Wim Taymans
3f46044c39 impl-node: update xrun_count of late nodes
When the graph didn't complete, update the xrun_count in each node
that didn't complete.

We can then remove the code to simulate that from pw-top.
2023-05-22 10:24:51 +02:00
Wim Taymans
de9b28f783 context: don't use fallback driver if priority_driver <= 0
The drivers with priority_driver <= 0 should not be used as a fallback
driver for audio ever because it does not do the timing correctly.

One example is the screencast driver.

Fixes #3219
2023-05-22 09:48:51 +02:00
Wim Taymans
c5e1515b7a context: add method to add/remove context listener 2023-05-21 15:45:45 +02:00
Pauli Virtanen
38860630a5 pulse-server: module-gsettings: check schemas exist before starting
Check the required GSettings schemas exist before trying to use them, as
g_settings_new aborts if they are missing.  Instead, make it just log
errors.
2023-05-21 10:18:56 +00:00
Wim Taymans
9192892d08 impl-node: always resume non-driver nodes when finished
We don't really have a mechanism to do async resume and OK is now
emitted by the filter when nothing happened.
2023-05-19 18:07:53 +02:00
Wim Taymans
7da1094819 remote-node: update some internal state
This is not really used yet but when we get an activation record from
the server we can update the node stet some more.
2023-05-19 15:25:40 +02:00
Wim Taymans
f085a1fa49 impl-node: improve graph xrun detection
Simply check for the state of the activation.
2023-05-19 15:25:14 +02:00
Wim Taymans
606bbefaa4 filter: return better value from process() 2023-05-19 13:33:39 +02:00
Wim Taymans
0ab335d041 stream: improve debug 2023-05-19 13:33:32 +02:00
Wim Taymans
05f5e416e2 filter-chain: include unistd for getcwd 2023-05-17 12:19:57 +02:00
Wim Taymans
782d5af050 pulse-server: add server.dbus-name option
Add an option to set the name for the dbus service. Setting an
empty name will skip dbus registration.

See #2987
2023-05-17 12:16:16 +02:00
Wim Taymans
5a12b35be7 stream: fix state changes 2023-05-17 12:01:57 +02:00
Wim Taymans
135647f193 module-filter-chain: do better error reporting
When we find no valid sample file to read, go through all files and
report why they fail to load. Also display the current working directory
so that we can see where file are loaded from.

See #3223
2023-05-17 11:01:26 +02:00
Wim Taymans
65a5272a9f stream: keep error res around
So that we can return it when there is an error instead of the generic
-EIO.
2023-05-17 11:00:52 +02:00
Wim Taymans
ca17672871 module-filter-chain: give better error when load fails
See #3223
2023-05-16 22:33:52 +02:00
Wim Taymans
318bb0b442 context: Don't stop at driver nodes, only driving nodes
Don't stop collecting runnable nodes when we find a driver, only a
driving node. Otherwise we would skip nodes between virtual sinks and
the real sink when the virtual sink is not driving.

Fixes #3220
2023-05-16 16:44:27 +02:00
Wim Taymans
26e9a4ce13 impl-node: add some comments 2023-05-15 15:42:37 +02:00
Wim Taymans
a0304c6691 module-rtp: sync session unlink with data thread
See #3217
2023-05-15 12:47:37 +02:00
Wim Taymans
a15517851e module-rtp: fix sess.media usage 2023-05-15 12:34:56 +02:00
Wim Taymans
d3896d290e module-rtp: set default sess.media in properties
Set a default sess.media in properties because we will use it later.
2023-05-15 12:23:28 +02:00
Wim Taymans
9035b97b62 module-rt: improve messages
Move some warnings to info.
Only show 1 warning with all the info why module-rt can't provide
realtime scheduling.

Fixes #3194
2023-05-15 09:31:33 +02:00
Wim Taymans
988fc9692a impl-link: only activate links between runnable nodes
The node might be active but passive, in which case it will not run and
there is no need to schedule it.

Fixes #3215
2023-05-14 20:55:38 +02:00
Wim Taymans
a25c021074 jack: don't fill aliases by default
JACK does not automatically generate aliases, so don't do that either.

The problem is that no new ports can be created if one already exists
with the same name or any of the aliases. This causes problems when a
port is renamed and a new port is created with the old name because the
alias might still be the old name and port creation fails.

Add a jack.fill-aliases for this purpose.

Fixes #3154
2023-05-12 17:58:07 +02:00
Wim Taymans
4c48c7e7b9 module-roc-source: make sure we don't overflow target_latency
See #2641
2023-05-12 16:51:49 +02:00
Wim Taymans
bd28637233 module-rtp-sap: ttl is uint32_t 2023-05-12 16:37:25 +02:00
Sebastian Jaeckel
01d6724819 rtp-sink: fix ttl property which is NOT a bool 2023-05-12 14:34:17 +00:00
Wim Taymans
741037f1ae impl-node: move signalfd into pw_node_target
We don't need an extra signal_func, we can write to the signalfd
directly.
2023-05-12 13:02:47 +02:00
Wim Taymans
e3d715dfdf module-raop: only send volume when recording
See #3210
2023-05-12 10:48:40 +02:00
Wim Taymans
3a08510a81 properties: fix serialization of values
When the first parsed part of the value does not look like a container,
dump the complete length of the value.

If a value would contain 'Tunnel sink', it would previously only
serialize the 'Tunnel' part and ignore the rest.

See #3212
2023-05-12 10:11:41 +02:00
Wim Taymans
7b0c019a2b pulse-server: include rate/format for tunnel 2023-05-12 10:11:17 +02:00
Wim Taymans
7eeb9a63f8 pulse-server: remove / when no target object 2023-05-12 10:11:01 +02:00
Wim Taymans
150e7031ae pulse-server: improve channel formatting 2023-05-12 10:09:42 +02:00
Barnabás Pőcze
2ba9881b4d pulse-server: pending-sample: handle client disconnection correctly
Previously, a client disconnecting while a sample was playing could
lead to issues. For example, if a client disconnected before the
"ready" signal of the sample-play arrives, `operation_new_cb()`
would be called and that would try to use the client's pw_manager,
however, that has previously been destroyed in `client_disconnect()`.

If the client disconnected after the "ready" signal but before the reply
has been sent, then `sample_play_ready_reply()` would never be called
since operations are completed via the client's pw_manager which
would already be destroyed at that point.

Fix this by installing a listener on the client, and properly
cancelling the operation and making sure that the pending_sample
is correctly destroyed.
2023-05-10 18:57:20 +00:00
Barnabás Pőcze
bd510bf602 pulse-server: pending-sample: add on_ prefix to event handlers 2023-05-10 18:57:20 +00:00