Commit graph

1036 commits

Author SHA1 Message Date
Julian Bouzas
2660e13c4a config: enable monitor ports on audio sinks 2020-05-21 09:47:56 -04:00
Julian Bouzas
c6f24fac8a main: disconnect core before exiting
Disconnecting core finishes all pending tasks, which is needed in order to avoid
possible leaks if some tasks are still pending when exiting.
2020-05-19 10:18:51 -04:00
George Kiagiadakis
27064d78f8 modules: initial version of module-session-settings 2020-05-16 12:54:36 +03:00
Julian Bouzas
f78ca66922 config-policy: remove keep property and never unlink endpoints 2020-05-15 08:28:58 -04:00
George Kiagiadakis
5eecc5b68a object-manager: remove deprecated API 2020-05-14 16:24:34 +03:00
George Kiagiadakis
1aefda4128 daemon: activate plugins in an idle callback to avoid side-effects
the on_sessions_exported callback runs from within the context
of export_tmp_globals in object-manager.c and when plugins register
more object managers, it modifies the object managers list that
export_tmp_globals is iterating over, making things behave really weird
2020-05-13 18:18:52 +03:00
George Kiagiadakis
7149745beb daemon: activate all available plugins after the sessions are ready 2020-05-12 18:18:24 +03:00
Julian Bouzas
6044b23aed modules: refactor config-policy to use the new session item API 2020-05-12 10:03:29 -04:00
Julian Bouzas
4b7bc92e4b modules: remove pipewire module and move algorithms to module-si-adapter 2020-05-12 09:47:35 -04:00
Julian Bouzas
6317599477 src: config: add audio sink streams configuration 2020-05-12 09:47:35 -04:00
George Kiagiadakis
66a0bf6093 lib: implement a wp_init() function 2020-05-11 15:45:09 +03:00
Julian Bouzas
2e781ce607 src: config: load all session item modules 2020-05-11 12:03:43 +03:00
Julian Bouzas
616034174d src: main: add create-session command to create sessions when wireplumber starts 2020-05-11 12:03:43 +03:00
Julian Bouzas
af5da7a372 src: config: update default wireplumber configuration to work with new config-endpoint module 2020-05-11 12:03:43 +03:00
Julian Bouzas
beb0056dfc conf: remove loading of unexistent module-session 2020-04-21 16:11:05 -04:00
George Kiagiadakis
9ca342f89f debug: update all library code to use the new debug system
+ enable the new log writer on the executables
+ enable structured logging in the tests
2020-04-14 18:31:17 +03:00
Julian Bouzas
c2dfec2184 monitor: add dbus-reservation flag 2020-03-20 14:01:22 -04:00
Julian Bouzas
d9abbf811f config: make default configuration for desktop and create a separate one for automotive 2020-03-03 13:27:18 -05:00
Julian Bouzas
60bdea1ed6 modules: add jack-device module 2020-03-03 11:14:13 -05:00
Julian Bouzas
83a0725b6a modules: remove match priorities from config files and use the filename instead 2020-01-14 09:15:22 -05:00
Julian Bouzas
a9ac1fdc06 update to the latest pipewire API 2020-01-13 15:07:08 -05:00
Julian Bouzas
4ec61d79b8 config-static-nodes: add config static nodes module
This module allows wireplumber to create static nodes that match a specific
device using a spa node factory. Matching is optional, and if there is no match,
the node will always be created.
2020-01-09 08:50:03 -05:00
George Kiagiadakis
1ccc570f3f docs: add full documentation on WirePlumber's configuration options and files 2019-12-23 18:21:14 +02:00
George Kiagiadakis
db7317c1ac config: add missing endpoint priority in hw:0,0 config 2019-12-19 14:37:11 +02:00
George Kiagiadakis
1586d7314f config: fix typo in config files 2019-12-17 17:36:57 +02:00
George Kiagiadakis
5dc250a961 config: refactor wireplumber's configuration 2019-12-17 17:16:53 +02:00
Julian Bouzas
7ac9c6359c modules: only allow 'sink' and 'source' strings when parsing direction in config files 2019-12-16 13:37:05 -05:00
Julian Bouzas
3fe1e96e2e config-policy: remove parsing of streams file
This is now done by the config endpoint module
2019-12-16 13:37:05 -05:00
Julian Bouzas
acda80d77c modules: add config endpoint module 2019-12-16 13:36:56 -05:00
Julian Bouzas
50f06baf3a modules: remove alsa-udev and audio-client modules 2019-12-16 13:03:36 -05:00
George Kiagiadakis
aa4fb5b1aa modules: implement module-session, a WpSession provider module
This keeps track of the default endpoint and selects a default
based on endpoint priorities when devices are discovered
2019-12-11 23:45:06 +02:00
George Kiagiadakis
c0bf6dca56 config: remove the stream from the default endpoint-link files
So that we can use media.role to specify the stream
2019-12-11 00:44:25 +02:00
George Kiagiadakis
91e309bad0 config: fix typo 2019-12-05 14:27:17 +02:00
George Kiagiadakis
a11cd3b651 parser-endpoint-link: make 'properties' subtables of 'match-endpoint' and 'target-endpoint' 2019-12-05 12:21:24 +02:00
Julian Bouzas
664db8a200 modules: add config policy module 2019-12-04 16:38:35 -05:00
Julian Bouzas
3cb74e0611 modules: remove simple policy
This will be replaced by a new policy based on configuration files
2019-12-04 16:38:35 -05:00
Julian Bouzas
2578ec4286 src: set the default configuration path when wireplumber starts 2019-12-04 16:38:35 -05:00
Julian Bouzas
857217bc3f modules: remove the mixer
This is no longer used and it is the wrong approach anyway.
A mixer GUI needs to list all endpoints and figure out the controls
from the streams on its own, using the new endpoints API.
2019-11-06 16:41:54 +02:00
George Kiagiadakis
07835488a0 modules: remove module-pw-bluez
This is not used by AGL anymore and it will go away *anyway*
when we switch to the configuration-based logic for
creating endpoints
2019-10-07 17:44:35 +03:00
George Kiagiadakis
7e41d5aa52 monitor: add a flag to activate alsa devices
In current pw master the behavior has been changed to not activate
the "On" profile on alsa devices by default, because of the DeviceReserve
D-Bus API implementation in media-session.

This is a hack here to get the previous behavior. In the future
we should have a way to configure profiles, as well as to pick
a sensible default by autodetection.
2019-10-07 16:47:54 +03:00
George Kiagiadakis
bbca2ca236 monitor: update to reflect API changes in pipewire master 2019-10-07 16:30:04 +03:00
George Kiagiadakis
48fbabcc3f daemon: do not access the inexistent error-message property from core
This is a remainder from the old WpRemote, which is gone.
I would re-add the property, but it's not worth it, since libpipewire
prints it as well by default
2019-10-02 21:18:44 +03:00
Julian Bouzas
26fb89cb16 modules: move softdsp-endpoint inside module-pipewire 2019-09-25 10:25:49 +02:00
George Kiagiadakis
375fa8a3dd modules: replace the monitor code from module-pw-{alsa,bluez} with module-monitor 2019-09-17 16:35:14 +03:00
George Kiagiadakis
cc3f01b248 daemon config: add config command to load pipewire modules 2019-09-17 16:35:14 +03:00
George Kiagiadakis
d5acbdd87c daemon config: add the ability to register spa libraries from the config file 2019-09-17 16:35:14 +03:00
George Kiagiadakis
371e4cf9f3 core: allow passing properties to the pw_core and pw_remote constructors 2019-09-07 18:21:17 +03:00
George Kiagiadakis
a63f2bb99b lib/wp: merge both WpRemote & WpRemotePipewire in WpCore
In practice we always create a remote and connect to pipewire.
Any other scenario is invalid, therefore, it is not justified
to be confused with so many classes for such small functionality.
This simplifies a lot the modules code.

Also, this commit exposes the pw_core and pw_remote objects
out of WpCore. This is in practice useful when dealing with low-level
pw and spa factories, which are used in the monitors. Let's not
add API wrappers for everything... Bindings will never use this
functionality anyway, since it depends on low level pipewire C API.
2019-09-07 17:55:46 +03:00
Julian Bouzas
6786b13fdc bluez: add new module to monitor bluetooth devices 2019-08-19 10:42:03 -04:00
George Kiagiadakis
1ed004c3c1 policy: implement a basic policy based on role priorities
* Every client has a priority based on its role
* For playback, we allow only a single client to play at a time
* For capture, we allow all clients to capture simultaneously
* Every time the "selected" device changes (either because devices
  are discovered/removed or because the user changed the selection),
  the clients are re-linked to the new "selected" device.
* When a playback client quits and there are others waiting unlinked,
  the highest priority one is linked automatically.
* This also properly fixes re-linking the correct client(s) to the
  correct device(s) when wireplumber exits and restarts.
2019-07-12 19:28:27 +03:00