Commit graph

504 commits

Author SHA1 Message Date
George Kiagiadakis
c524e1e317 m-default-metadata: remove default endpoints, follow upstream logic
* default endpoints no longer make sense
* follow upstream logic of configured vs effective default nodes
* store node names in json inside the metadata, as upstream does
* add default video source
2021-03-31 13:10:13 +03:00
George Kiagiadakis
fd2ddffdd7 lua: s/Feature.Object.ALL/Features.ALL/
It looks nicer to have groups of features in 'Features.'
instead of 'Feature.'
2021-03-29 18:35:35 +03:00
Julian Bouzas
ab5a58715c m-default-metadata: add support for default audio nodes 2021-03-26 16:16:02 -04:00
Julian Bouzas
b7e347d92c modules: remove endpoint impl on si-node, si-audio-convert and si-audio-adapter 2021-03-26 16:16:02 -04:00
Julian Bouzas
325522ae51 modules: add si-audio-endpoint session item 2021-03-26 16:16:02 -04:00
Julian Bouzas
04992f0d07 modules: remove si-monitor module
It is not needed as si-standard-link can be configured with port contexts
2021-03-26 16:16:02 -04:00
Julian Bouzas
0d71565d63 m-si-standard-link: set out-item-id and in-item-id properties 2021-03-26 16:16:02 -04:00
Julian Bouzas
c0143b5f18 m-si-audio-adapter: ensure ports are available before enabling active 2021-03-26 16:16:02 -04:00
Julian Bouzas
06c12fe7c2 m-lua-scripting: add get_associated_proxy session item Lua API 2021-03-26 16:16:02 -04:00
Julian Bouzas
ebf52adb21 si-interfaces: make WpSiLink work with WpSiPortInfo instead of WpSiEndpoint 2021-03-26 16:16:02 -04:00
Julian Bouzas
64cf2bd644 si-interfaces: rename WpSiEndpointAcquisition to WpSiAcquisition
The get_endpoint_acquisition() vmethod has also been moved to WpSiPortInfo, and
therefore renamed to get_acquisition().
2021-03-26 16:16:02 -04:00
Julian Bouzas
13fc0adb22 m-si-standard-link: use a weak reference for in and out endpoints
Allows checking if the endpoints are still valid before releasing the
acquisition. Sometimes the endpoints are destroyed before the link, and
releasing acquisition is not needed. There is no way to check that with raw
pointers.
2021-03-26 16:15:38 -04:00
Julian Bouzas
0bef8280d7 m-si-standard-link: fix in-endpoint check when configuring 2021-03-26 15:56:07 -04:00
Julian Bouzas
d71cace24f m-si-convert: rename to si-audio-convert
Because it is only meant to be used with audio nodes
2021-03-18 15:00:22 -04:00
Julian Bouzas
340213272e m-si-adapter: rename to si-audio-adapter
Because it is only meant to be used with audio nodes
2021-03-18 14:47:22 -04:00
Julian Bouzas
3aef916d51 session-item: add _register and _remove API
Allows using object managers to listen for registered items
2021-03-18 14:30:11 -04:00
Julian Bouzas
120aab04ae session-item: refactor and inherit from WpObject
This adds WP_SESSION_ITEM_FEATURE_ACTIVE and WP_SESSION_ITEM_FEATURE_EXPORTED
features, so _activate and _export APIs have been removed. Modules and unit
tests have also been updated.
2021-03-18 14:30:05 -04:00
Julian Bouzas
39ef6df7ce m-si-adapter: rename algorithms to audio-utils 2021-03-18 12:10:37 -04:00
Julian Bouzas
2747d21de2 m-si-monitor-endpoint: rename to si-monitor 2021-03-18 12:10:37 -04:00
Julian Bouzas
b10a5b6b49 m-si-simple-node-endpoint: rename to si-node 2021-03-18 12:10:37 -04:00
Julian Bouzas
12b2c00d0b lib: remove WpEndpointStream API
Add all that goes with it.
2021-03-18 12:10:37 -04:00
Julian Bouzas
c158dfc020 m-default-routes: return if default routes for a device are not found
Avoids unneeded assertion error messages.
2021-03-15 07:52:57 -04:00
Julian Bouzas
6e716c9baa m-default-routes: relax some warning logs to debug 2021-03-15 07:52:57 -04:00
Julian Bouzas
1b5980476b m-lua-script: add object_deactivate API 2021-03-15 07:52:57 -04:00
Julian Bouzas
003afc3e7b m-lua-script: add closure for object_activate API 2021-03-15 07:52:55 -04:00
Julian Bouzas
ab04334448 m-lua-scripting: add WpSessionBin add API
Needed when adding streams to softdsp endpoints
2021-03-04 14:18:41 -05:00
George Kiagiadakis
15a74052a1 lua/api: add Link() constructor 2021-03-03 13:15:13 +02:00
Arnaud Ferraris
bf72973db4 module-default-routes: store/restore route properties
This commit enhance `module-default-routes` so that the route properties
(such as volume, channel map...) are saved on modification, and re-applied
each time a particular route is selected.
2021-03-02 18:17:56 +01:00
Arnaud Ferraris
b63b172b0a module-device-activation: apply default route on each new device
This commit modifies `module-device-activation` so that it can restore
the default routes when a device appears.
2021-03-02 18:17:56 +01:00
Arnaud Ferraris
a499e02ad9 modules: add module-default-routes for storing/restoring routes
This commit adds a WirePlumber module which stores the current route for
a given device, and implements the necessary interfaces to restore those
on startup.

The routes are stored as an array of objects in JSON format.

Please note that actually restoring routes on startup is not done by this
module but will be implemented separately in a future commit.
2021-03-02 18:17:56 +01:00
George Kiagiadakis
79ba66e46b lua/api: default Constraint type always to pw-global
now that interest is declared on G_TYPE_OBJECT by default
(in optional Interest function arguments), this conditional default
no longer works as expected...

besides, it may be confusing to have a different default depending
on the interest type
2021-03-02 18:26:34 +02:00
George Kiagiadakis
9399f3db66 lua/api: simplify & improve session_item_configure 2021-03-02 14:39:00 +02:00
George Kiagiadakis
a4ec7538bc lua/api: make the type optional when declaring Interest as a function argument
it makes no sense to specify the type when calling, for instance,
session:lookup_endpoint() or similar functions

it also makes it easier to use iterate or lookup in the object
manager, when we already know the type of the objects that the om
contains
2021-03-02 14:08:43 +02:00
George Kiagiadakis
905636dc8d lua/api: improve getting optional Interest arguments
Add the ability to construct an Interest argument without
using the Interest keyword, so instead of:

  om:lookup(Interest { type = "session" })

we can now write:

  om:lookup { type = "session" }

... and also remove lookup_filtered from ObjectManager
2021-03-02 13:11:54 +02:00
Julian Bouzas
862e253607 m-lua-scripting: add get_n_streams endpoint API 2021-03-01 13:14:57 -05:00
Julian Bouzas
2052eb2b1f m-lua-scripting: add lookup session API
Also improves session API to accept object interests.
2021-03-01 13:14:57 -05:00
George Kiagiadakis
5b4fe3cd85 lua/pod: don't crash on parsing objects with unknown keys, just ignore them 2021-03-01 17:57:32 +02:00
George Kiagiadakis
51e24c58b5 m-lua-scripting/pod: retrieve Ids in Array & Choice as strings, if possible
When an Array or Choice that contains Spa:Id appears as a value for an object
field, it is possible to retrieve the Id type from that object field type.
2021-02-23 13:56:38 +02:00
George Kiagiadakis
5302700c6d m-lua-scripting/pod: s/id_type/object_id/ as commented on !125 2021-02-23 12:47:24 +02:00
Julian Bouzas
bd65f9578d m-lua-scripting: add support for choices when creating object pods 2021-02-23 10:41:46 +00:00
Julian Bouzas
0694889245 m-lua-scripting: refactor array and choice pod constructors to accept Id names 2021-02-23 10:41:46 +00:00
Julian Bouzas
910ff838e4 m-lua-scripting: allow constructing pod Ids with the Id name 2021-02-23 10:41:46 +00:00
Julian Bouzas
cd2e648b3c m-lua-scripting: set id_type field when parsing pod objects 2021-02-23 10:41:46 +00:00
Julian Bouzas
2465088c5a m-lua-scripting: set pod_type and value_type fieds when parsing non-primitive pods 2021-02-23 10:41:46 +00:00
Julian Bouzas
8fa6116786 m-lua-scripting: start indices from 1 when parsing pods
For consistency with LUA
2021-02-23 10:41:46 +00:00
George Kiagiadakis
d6ea7ffe76 lua/api: fix client update_permissions()
* the type checks were wrong, it was requiring the key to be string
  and the value integer
* add the ability to use "any" or "all" for a key, saving us the trouble
  of passing -1 from lua (int64) into a uint32 (ugh!)
* use a GArray instead of manual malloc/realloc
* allocate the array as late as possible, to minimize the risk of leaking
  its memory if we hit luaL_error()
2021-02-18 16:41:42 +02:00
George Kiagiadakis
e2d6e5b992 lua: enable loading scripts with a shebang
* skip the shebang before loading the file in the interpreter,
  as # is not a valid lua comment
* allow loading scripts with a relative path in interactive mode
2021-02-18 13:47:34 +02:00
George Kiagiadakis
6c85b8958d lua/api: log using a debug category unique for the calling script file
filename: foo.lua -> category: script/foo
2021-02-18 12:52:39 +02:00
George Kiagiadakis
cb8a8936aa lua/api: ensure the function name in the debug output is non-null
NULL crashes the journald writer
2021-02-18 12:24:01 +02:00
Raghavendra
c791ed3a62 m-lua-scripting: add WpPipewireObject api 2021-02-16 20:15:13 +05:30