Commit graph

456 commits

Author SHA1 Message Date
George Kiagiadakis
6954105589 wpctl: fix inspect for metadata objects
metadata objects do not implement WpPipewireObject
2022-06-28 10:57:09 +03:00
Wim Taymans
8ade19ac59 config: rename empty.noise -> dither.noise 2022-06-27 11:50:33 +02:00
Julian Bouzas
392bd81913 alsa.lua: remove node names from table when parent device is destroyed
Fixes #293
2022-06-27 08:52:36 +00:00
Wim Taymans
2536380a81 config: add more possible device properties 2022-06-24 14:11:26 +02:00
Varnit Singh
f53efaabf1 wpctl: allow modifying volume levels using percentage/step amount. 2022-06-08 09:25:45 +00:00
Varnit Singh
e192deb7bc wpctl: Add get-volume command and functionality 2022-06-08 09:18:34 +00:00
Julian Bouzas
46e7c5c144 m-reserve-device: use WpDbus API 2022-06-02 12:34:16 -04:00
George Kiagiadakis
2ac384711d libcamera: give higher priority to external cameras
if you have plugged an external camera, that probably means you
prefer using that instead of the internal one
2022-05-31 12:15:11 +03:00
George Kiagiadakis
334a134471 v4l2: append "(V4L2)" in node descriptions
This is to make it easier to work with V4L2 and libcamera simultaneously
2022-05-31 10:53:01 +03:00
George Kiagiadakis
b44759ec3f libcamera: improve the front/back camera descriptions 2022-05-31 10:41:20 +03:00
George Kiagiadakis
6931050b7f v4l2/libcamera: set node.nick on nodes 2022-05-31 10:40:56 +03:00
George Kiagiadakis
2299c389b5 libcamera: set a user-friendly description for internal cameras 2022-05-30 11:06:46 +03:00
George Kiagiadakis
b345468e82 wpctl: print link states in the status output 2022-05-30 11:06:46 +03:00
George Kiagiadakis
9ec2757d27 monitors: enable libcamera by default and set priority on all camera nodes
Currently v4l2 nodes will get higher priority than libcamera ones.
The default can be changed, of course, with wpctl.

Things are still not great if a camera is enumerated by both monitors.
The first node to be linked will grab the device and the second one
from the other subsystem will fail to negotiate.
2022-05-26 14:08:16 +03:00
Julian Bouzas
c00c5a6675 alsa.lua: fix device name deduplication when reservation is enabled
Fixes #241
2022-05-19 07:43:12 -04:00
George Kiagiadakis
1f04530920 config: fix enabled property to default to "true" when not defined
Fixes backwards compatibility with older config files

Fixes: #254
2022-05-12 12:19:38 +03:00
George Kiagiadakis
2eed279c9d i18n: remove the module and embed the gettext calls into the lua api
There is no need to have this as an optional module, since libintl
is a hard dependency of both PipeWire and GLib. This way we can keep
things a bit simpler and faster (no string copies and plugin lookups)

Bump meson dependency to 0.59 to benefit of the libintl lookup that
is now built into meson's dependency() function.
2022-05-10 15:16:09 +03:00
Sven Bartscher
8dc4c36dd4 Enable automatic bluetooth profile switching for Mumble
For some reason Mumble uses "game" as its media.role, but it is
actually a communication tool where a headset profile is apropriate.
2022-05-10 10:45:03 +02:00
Théo Lebrun
3bdacc414e config: add enabled property on monitors
Signed-off-by: Théo Lebrun <theo.lebrun@bootlin.com>
2022-05-05 08:22:08 +00:00
Julian Bouzas
7080e9961c policy-node: forward filter stream's format to filter device
Currently, when using filter nodes such as echo-cancel or filer-chain, the
ports format of the virtual stream node might not always match the format of its
associated virtual device node. This can happen if the virtual stream node is
linked with a real device node configured with many channels, such as surround
profile. In that case, the channel configuration is not forwarded to the virtual
device node, making the application not being aware of a surround setup.

This change listens for port format changes in the virtual stream nodes, and
reconfigures the virtual device node ports everytime the virtual stream node's
port format changes.

This behavior is experimental and optional, so it is disabled by default.
2022-05-05 08:09:21 +00:00
Julian Bouzas
70ae393166 wpctl: support changing volume and mute by PID number
The 'set-volume' and 'set-mute' commands have a new --pid flag to allow changing
the volume or mute for all client nodes that are created by a specific process.
2022-05-03 09:36:57 +00:00
George Kiagiadakis
0f3bb516f8 wpexec: fix script activation to work with per-script plugins 2022-05-02 11:01:34 +03:00
Théo Lebrun
7784cfad92 wpctl: support @DEFAULT_{AUDIO,VIDEO}_{SINK,SOURCE}@ as ID 2022-04-26 13:51:32 +00:00
George Kiagiadakis
ecb6100b77 m-lua-scripting: wrap every script in a WpPlugin and expose async activation api
This allows scripts to declare when they have finished their loading,
so we can now also know when wireplumber is done loading and ready to
handle clients

Related to !313
2022-04-23 20:14:59 +03:00
msizanoen1
a2472542a9 scripts: access-portal: Fix incorrect bitmask checking for media roles
In Lua, `0` is a truthy value, which means `not 0` is `false`. Compare
the resulting value from bitwise AND with 0 instead of checking it with
`if not` to ensure correctness.
2022-04-15 13:23:19 +07:00
Pauli Virtanen
6feecab74e scripts: translate user-visible strings in alsa.lua 2022-04-11 19:20:43 +03:00
Dennis D
f8e7b39c25 Update 10-default-policy.lua
Added "telegram-desktop", which is the name used by later versions of Telegram.
(tested on Telegram version 3.6.1)
2022-04-09 14:31:31 +00:00
Joker 234
f7c01d2475 Add Linphone to "media-role.applications"
Linphone (4.2.5) doesn't set any media.role → linphone should be in this predefined list as well.
2022-04-08 09:49:14 +00:00
Torkel Niklasson
d1f20e22d6 systemd: Allow systemd system services to use module-rt 2022-04-05 06:07:17 +00:00
Frédéric Danis
57769c2071 scripts: Add script to create fallback sink
This script, base on PipeWire module fallback-sink will create a fallback
sink node if there's no other sink available except the endpoints created
by WirePlumber.
2022-04-04 13:18:34 +00:00
George Kiagiadakis
0da29f3818 config: document which options need to be turned off to use wp without D-Bus
and actually implement an option for the logind module

Related to: #237
2022-04-04 14:38:28 +03:00
Pauli Virtanen
da5d25acbe scripts: policy-device-profile: clear tables when devices removed
When device ids are invalidated, clear all local tables about them,
because the id may be reused by different object, or the same object
reappearing.
2022-04-04 09:44:43 +00:00
George Kiagiadakis
8738955723 suspend-node: trigger idle timeout also if a node goes into "error" state
This is what media-session does as well and allows recovering from
errors without having to restart wireplumber
2022-04-04 11:31:37 +03:00
Pauli Virtanen
812fc9b6b1 scripts: policy-node: filter-like streams should not follow default
Filter-like streams (e.g. output stream from filter-chain) should not
start following default sink, as usually the user intends their routing
to remain static, and not change unless explicitly requested.
Pulseaudio has special handling for streams associated with filter
sinks/sources, and does not make such streams follow default.

Use presence of node.link-group to determine which streams are
associated with filter sinks/sources, and don't make them to follow
default.
2022-03-27 15:12:20 +03:00
Julian Bouzas
d173eeab88 main: don't use struct spa_json 2022-03-24 04:37:00 -04:00
Julian Bouzas
2f186c10e7 main: use WpSpaJson when loading components 2022-03-24 07:21:25 +00:00
Pauli Virtanen
7e6e0e9ba0 src: setlocale in main() for tools and the daemon
Previously, pw_init calls setlocale(), but this will change in future.
Setting the locale should be done by the main application, and is needed
in wireplumber for e.g. for translated UI elements.

Set the locale in main() for wireplumber daemon and tools, to have the
locale set also with the new pw_init behavior.

Set also LC_NUMERIC to C, to match old pw_init behavior.
2022-03-24 07:11:39 +00:00
Dennis D
538976b54a Add Telegram Desktop to the list of programs to enable bluetooth autoswitching.
Resolves: https://gitlab.freedesktop.org/pipewire/wireplumber/-/issues/215
2022-03-08 13:43:30 +00:00
Wim Taymans
0747d34e44 alsa: fixup node.nick
Some devices (Mostly USB devices) have a generic pcm name (USB Audio)
that is quite useless. Filter this out and fall back to the device nick
in that case.
2022-03-08 11:03:24 +00:00
Ashok Sidipotu
72f4f19cbf policy-endpoint-device: Fix endpoints not connected with devices
-if device linkables are created ahead of the endpoints,
 endpoints are not connected with the devices.

-rescan the endpoints on an endpoint creation.
2022-03-08 10:08:55 +00:00
Pauli Virtanen
03c6fb0a86 scripts: bluez: set icon name for bluez devices 2022-03-08 09:56:28 +00:00
Pauli Virtanen
398bcca00d scripts: restore-stream: handle target.object 2022-03-08 09:49:55 +00:00
Pauli Virtanen
5872dc9408 policy-node: handle nodes-follow-default in handleLinkable
Since nodes may have a target specified in their props, the logic in
cleanupTargetNodeMetadata does not work correctly.

Instead, emulate what Pulseaudio does: if we see a reconnectable node
with target defined by node props, but not by metadata, which is linked
to the default sink, then make the stream follow the default from that
point on.
2022-03-08 09:49:55 +00:00
Pauli Virtanen
e4325bc41d policy-node: support target.object key
Setting node target by id is not safe due to id reuse, and so
target.object which specifies the target by its object.serial was
introduced, and is used e.g. by pipewire-pulse.

Use target.object specifications in policy-node if they are present.
2022-03-08 09:49:55 +00:00
George Kiagiadakis
b95da3393c alsa: also try the profile description if the pcm name is empty, for node.nick 2022-03-01 12:11:25 +02:00
George Kiagiadakis
4e5af26382 alsa: use the pcm name to populate the node.nick
This avoids using device.nick, which is the card name, on all nodes
of a card. Useful on UCM, where analog, hdmi, etc are all exposed
as nodes on a single profile.
2022-03-01 11:35:55 +02:00
Julian Bouzas
33d105c2b6 conf: add property to disable dummy AVRCP player in bluetooth.conf 2022-02-25 16:41:49 +00:00
Pauli Virtanen
2c58de2cc5 scripts: policy-node: don't use fallback for dont-reconnect w/ target
Connecting dont-reconnect nodes that have a defined target to fallback
probably does not make sense.

They will be linked to a target that the client likely did not intend,
and the link will not be changed later on.

In Pulseaudio, if the defined target is not found, streams are not
connected to the fallback but instead fail. This happens also with
streams that don't have DONT_MOVE specified.

Pipewire-media-session also did not link dont-reconnect streams with a
defined target to the fallbacks.
2022-02-25 16:39:12 +00:00
Pauli Virtanen
d303534cba policy-node: don't move already linked dont-reconnect nodes
Dont-reconnect streams should not be moved to a new target, even though
other streams would move.

Pulseaudio DONT_MOVE works like this, and also pipewire-media-session
worked like this.
2022-02-25 16:33:46 +00:00
Pauli Virtanen
54894eabb7 scripts: policy-node: handle device linkable removal
When device nodes go away, we should remove links and peer_id references
concerning them, so that we don't leave behind stale links and stale id
entries in the peer_id tables.

Also fix bug in si_flags[out_id] handling in unhandleLinkable.
2022-02-25 16:33:46 +00:00