Commit graph

2202 commits

Author SHA1 Message Date
Wim Taymans
db93135ff7 impl-node: recalc when node flag change 2020-08-10 16:48:42 +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
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
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
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
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
cebd67e88b properties: use the _for_each iterator 2020-08-05 12:26:26 +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
64067bafe3 media-session: remove listener 2020-08-04 13:46:22 +02:00
Wim Taymans
66816580bc alsa: improve configuration of NICK 2020-08-03 18:16:53 +02:00
Wim Taymans
d57da19f26 client-device: first set implementation, then register
Setting the implementation updates the properties so that we
have more info when creating the global.
2020-08-03 18:11:12 +02:00
Wim Taymans
79937676a4 alsa: add profile description in node description 2020-08-03 16:28:09 +02:00
Wim Taymans
f2cc0e6723 media-session: add some debug for enum-param 2020-07-31 15:21:39 +02:00
Wim Taymans
5bdd65e066 device: pass original seq in async reply
When we get an async reply from the implementer, use the original
seq from the caller in the reply.

Fixes !287
2020-07-31 15:19:45 +02:00
Wim Taymans
5e51cbe48e media-session: improve param enumeration
Don't use subscribe, enum is more manageable.
Use user data field to check for changes.
Only enumerate readable params.
Enum all node params.
2020-07-31 13:59:25 +02:00
Wim Taymans
6f2e274b15 protocol: add a few more options for XDG_RUNTIME_DIR
PIPEWIRE_CORE can be used to specify a server name.
PIPEWIRE_REMOTE can be used to specify what server name to
connect to.

Either use the absolute path of the name to create and connect
to a server, or use a relative path. For a relative path, the
server name will be completed by prefixing the following paths
in order:

PIPEWIRE_RUNTIME_DIR environment variable,
XDG_RUNTIME_DIR environment variable,
HOME environment variable,
USERPROFILE environment variable,
home directory as stored in the password database.

Fixes #259
2020-07-31 12:46:58 +02:00
Wim Taymans
5f40bc6d4e gst: support VideoCrop meta
Convert the VideoCrop metadata to GStreamer metadata.
2020-07-31 11:44:46 +02:00
Wim Taymans
6fd373ac83 examples: add support for YUV data 2020-07-31 11:44:20 +02:00
Wim Taymans
df76501d39 impl-node: update driver stats as well
If we have an underrun but are managed by another driver, also update
the driver stats.
2020-07-30 18:22:33 +02:00
Wim Taymans
c7d7dd91f8 permission: add M permission
The M permission is needed to set metadata on an object.
2020-07-30 16:35:14 +02:00
Wim Taymans
91d4806611 permission: add some helpers
Add PW_PERM_ALL as a shortcut for all permissions
Add PW_PERMISSION_FORMAT and PW_PERMISSION_ARGS to nicely format
permissions.
2020-07-30 16:26:29 +02:00
Wim Taymans
8db9a2741b metadata: only allow setting metadata on objects we can see
Allow a client to only set metadata on objects that it has
read access to.
2020-07-30 15:30:13 +02:00
Wim Taymans
bd8b239621 client: add function to check permissions of a client 2020-07-30 15:16:30 +02:00
Wim Taymans
a5ec68e61c metadata: only set default name when not already set 2020-07-30 14:28:11 +02:00
Wim Taymans
ba8522aac9 metadata: we need W permission to set and clear properties 2020-07-30 14:27:35 +02:00
Wim Taymans
0d6bbaa7e1 policy-node: only configure devices when active
Wait until a node is active before we attempt to configure it or
else we don't yet have a format to configure it with.
2020-07-29 12:20:24 +02:00
Wim Taymans
e32a7a8d65 make some errors into debug
With the debug and return value we can delay writing error messages
in the log until we really need to.
2020-07-29 11:30:11 +02:00
Wim Taymans
a2de3b0873 policy-node: add default video source metadata 2020-07-28 11:17:36 +02:00
Wim Taymans
9e8851e0ae policy-node: do downmix in monitor streams
Monitor streams usually have 1 channel so ask for all monitored
channels to be downmixed.
Don't try to configure video or unknown streams
2020-07-28 10:50:00 +02:00