Commit graph

4319 commits

Author SHA1 Message Date
Wim Taymans
a3350d44eb pw-cat: use metadata to tag default device 2020-08-10 17:45:45 +02:00
Wim Taymans
5e9091a285 node: add new NEED_CONFIGURE flag
Add a new node flag that is set when the node needs more configuration.
Don't try to Start nodes that have the NEED_CONFIGURE flag set.
Make audioadapter clear the NEED_CONFIGURE flag when it has the
PortConfig.

These changes now make it possible to run:

gst-launch-1.0 -v pipewiresrc path=51 stream-properties="props,node.group=1" ! audio/x-raw ! pipewiresink stream-properties="props,node.group=1"

The pipewiresink and pipewiresrc will be added to the same scheduling
group (1) and the devices they connect to will be slaved, even if they
are otherwise not linked.

Without the NEED_CONFIGURE flag, pipewiresink would be added to the
pipewiresrc group and would be started by the daemon before the
session manager has a chance to configure (and link) the node.

Fixes #4
2020-08-10 16:57:14 +02:00
Wim Taymans
db93135ff7 impl-node: recalc when node flag change 2020-08-10 16:48:42 +02:00
Wim Taymans
2362953931 audioadapter: update flags 2020-08-10 16:48:03 +02:00
Wim Taymans
fb76f484a9 remote-node: also send spa_flags 2020-08-10 16:45:44 +02:00
Wim Taymans
915fba1eee node: handle state change errors
Keep the last error around when it's actually an error
When we get the sync reply from the state change, check if we have
an error. Keep the node in SUSPENDED on error.
2020-08-10 15:23:09 +02:00
Wim Taymans
2c2bb381b3 link: refactor a little 2020-08-10 15:23:09 +02:00
Wim Taymans
374210c890 acp: add per device port list
Add the list of possible ports for a device.
Pass the allowed devices in the routes.
Store the active port in the device.

Fixes enumeration of ports on devices with UCM.
2020-08-10 14:25:03 +02:00
Wim Taymans
5d90fe26f3 stream: use PIPEWIRE_NODE env as target_id fallback 2020-08-07 16:19:06 +02:00
Wim Taymans
b89e07f8c0 stream: use PIPEWIRE_LATENCY env as fallback 2020-08-07 15:15:40 +02:00
Wim Taymans
5fda46fdb9 remote-node: activate node after init
Activate the node after we successfully created a proxy and
initialized it.
2020-08-07 11:52:35 +02:00
Wim Taymans
e5f85d6a4c remote-node: clean node on error 2020-08-07 11:52:14 +02:00
Wim Taymans
a0777d7806 policy-node: only set peer when we actually linked something 2020-08-07 10:50:30 +02:00
Wim Taymans
cb3f1b51aa adapter: only become started on success 2020-08-07 10:49:52 +02:00
Wim Taymans
f4e8ebab51 improve debug and error messages 2020-08-07 10:47:18 +02:00
Wim Taymans
44e74c599f node: add group_id property
Nodes with the same group id are scheduled by the same driver, even
if they are not in any way linked to eachother.
2020-08-06 18:00:46 +02:00
Wim Taymans
8b2617227a client-node: improve debug 2020-08-06 17:59:58 +02:00
Wim Taymans
46b8b67ee6 policy-node: small cleanup
to keep the orinal node around if we want to do something with it
later
2020-08-06 17:58:42 +02:00
Wim Taymans
7cdef8aa32 media-session: improve debug 2020-08-06 17:11:35 +02:00
Wim Taymans
b9862868c1 gst: convert properties to strings when we can 2020-08-06 15:10:44 +02:00
Wim Taymans
e71936f870 Improve naming
master -> driving
priority_master -> priority_driver
segment_master -> segment_owner
2020-08-06 13:49:33 +02:00
Wim Taymans
98b7dc7c0c gst: don't do set_caps from the pipewire callback
Don't do any GStreamer data transport from the PipeWire callback
because it might block in preroll and block our communication with
PipeWire. Instead, take the caps and wake up the caller to continue
with negotiation.
2020-08-06 13:03:40 +02:00
Wim Taymans
34334b6ea3 gst: increase buffers in sink 2020-08-06 12:58:13 +02:00
Wim Taymans
0347a753c9 gst: pool add support for DONT_WAIT flag 2020-08-06 12:52:16 +02:00
Wim Taymans
4b56574ce0 policy-node: don't fail on incomplete format
Use some defaults when parsing the audio format.
2020-08-06 12:51:20 +02:00
Wim Taymans
8a9bb9dabb Use fcnt F_DUPFD_CLOEXEC to dup an fd
Closes #38
2020-08-06 11:08:20 +02:00
Wim Taymans
f961c726de param: add type info for volumeStep and Base 2020-08-05 20:25:55 +02:00
Wim Taymans
209a729e2e port: only warn if we're not cleaning up 2020-08-05 17:56:21 +02:00
Wim Taymans
cb14b41537 pw-cat: enable rtkit 2020-08-05 17:46:51 +02:00
Wim Taymans
2cf5bf7ac1 context: make it possible to control loaded modules
use the PIPEWIRE_PROFILE_MODULES env variable to load the modules
when nothing else is given.
2020-08-05 17:37:40 +02:00
Wim Taymans
8e3ae33550 pulse: enable rtkit on the client 2020-08-05 17:37:17 +02:00
Wim Taymans
eeeca7ecd2 stream: set the right NODE_NAME 2020-08-05 13:43:56 +02:00
Wim Taymans
469dff0153 use global_update_keys
First set the properties in the object itself and then copy them
over to the global. This ensure that the global properties are
also in the object and makes code a bit cleaner.

It also make it possible to use the global id to make the property
values unique, if we want to later .
2020-08-05 12:55:33 +02:00
Wim Taymans
f79c347667 global: add method to update global keys 2020-08-05 12:29:19 +02:00
Wim Taymans
3abd46b619 jack: Use out node name from the server
Get the node name from the global info when we see it.
Check if the name changed and set the right result flag for the app.
2020-08-05 12:26:59 +02:00
Wim Taymans
cebd67e88b properties: use the _for_each iterator 2020-08-05 12:26:26 +02:00
Wim Taymans
9290137931 pulse: handle NULL pw_stream
The pipewire stream might have been destroyed when the pulse stream
is freed.
2020-08-04 18:20:20 +02:00
Wim Taymans
377b3f9d42 pulse: always load the registry
Always get the registry, even if we're not using the introspect API
we still need it to keep track of the linked devices.
2020-08-04 18:16:02 +02:00
Wim Taymans
653465a1b1 pulse: handle device_name of NULL as error 2020-08-04 18:15:19 +02:00
Wim Taymans
979fec288e stream: let the operation emit the TERMINATED state
When we disconnect, let the operation emit the TERMINATED state
because some apps expect this state to be emited asynchronously.

Makes GStreamer pulsesink work.

Fixes #210
2020-08-04 18:13:37 +02:00
Wim Taymans
94c23b7ed1 pulse: handle memory user_data of NULL 2020-08-04 18:11:58 +02:00
Wim Taymans
35376fc415 pulse: improve debug 2020-08-04 18:07:20 +02:00
Wim Taymans
9edb0c1206 pulse: actually remember the default source 2020-08-04 17:21:15 +02:00
Wim Taymans
db12f47505 0.3.9 2020-08-04 14:30:27 +02:00
Wim Taymans
ab999f00ae link: don't connect to port destroy signal
Now that _port_destroy will first destroy all the links, there is no
need to listen for the destroy signal anymore in the link.
2020-08-04 14:13:44 +02:00
Wim Taymans
5bf6acad06 alsa: use PIPEWIRE_REMOTE env variable 2020-08-04 14:13:07 +02:00
Wim Taymans
64067bafe3 media-session: remove listener 2020-08-04 13:46:22 +02:00
Wim Taymans
77bd687bac acp: fix size of array 2020-08-04 12:05:56 +02:00
Wim Taymans
007c50df56 stream: clear user data on flush
Or else we might add the memory to the free list again when
we free the buffers. Fixes audacity using the pulseaudio backend
in portaudio.
2020-08-03 21:53:51 +02:00
Wim Taymans
66816580bc alsa: improve configuration of NICK 2020-08-03 18:16:53 +02:00