Commit graph

795 commits

Author SHA1 Message Date
George Kiagiadakis
b59ff48156 si-convert: improve node properties for convert nodes
* do not copy the full alsa node properties set
* use a node description that makes the nodes look better in JACK
* use . instead of / as a separator for the node.name, like elsewhere
* add audio.convert spa lib association in the tests that use si-convert;
  previously it used to work because library.name was present in the
  properties copied from the adapter (and it so happens that the adapter
  lives in the audioconvert spa plugin as well ...)
2020-06-29 13:05:44 +03:00
George Kiagiadakis
3bd1a199ed m-monitor: improve node names for JACK
JACK uses : as a separator to distinguish the port name
from the node name, so it ends up doing wrong separations
if we have : in the node name
2020-06-29 13:05:44 +03:00
George Kiagiadakis
030fb7ba46 main: fix size of buffer in call to g_input_stream_read()
if there was a remainder in the buffer from a previous iteration,
make sure not to fill too much data and go past the end of the buffer
2020-06-29 13:05:44 +03:00
George Kiagiadakis
785d049f7a main: fix call to g_input_stream_read after reaching the end of the buffer
after consuming the whole buffer, cur & linestart need to
be reset to point back to the beginning of the local buffer
2020-06-29 13:05:44 +03:00
George Kiagiadakis
ac295b10e3 m-config-endpoint: deactivate gracefully even if not activated
This may happen if the plugins were loaded but not activated
due to some parse error in wireplumber.conf
2020-06-29 13:05:44 +03:00
George Kiagiadakis
826e5e3c46 si-convert: use the clock rate defined in pipewire.conf 2020-06-29 13:05:44 +03:00
George Kiagiadakis
046040a323 meson: bump version to 0.2.96 2020-06-29 13:05:44 +03:00
George Kiagiadakis
75aac84f40 NEWS: release 0.2.96 2020-06-19 12:51:27 +03:00
George Kiagiadakis
83c7655267 docs: update configuration.md 2020-06-19 12:09:09 +03:00
George Kiagiadakis
374977f954 m-monitor: reduce string copies and leaks in module_init 2020-06-19 10:30:12 +03:00
George Kiagiadakis
fa6c1a74cb docs: fix broken link 2020-06-19 10:29:07 +03:00
George Kiagiadakis
30affd6b55 m-config-endpoint: also remove monitors when a node disappears
previously, we would only remove the endpoint associated with
the node, but not the monitor endpoint...

to implement that, we now store the node's associated session items
in the node's qdata instead of a local hash table, so that we
can store an arbitrary ammount of session items per node
2020-06-18 19:29:35 +03:00
George Kiagiadakis
697226f306 session-bin: call parent's reset() in reset()
otherwise the parent never un-exports or de-activates itself
and we leak a bunch of stuff
2020-06-18 19:28:03 +03:00
George Kiagiadakis
879c7d2ab9 si-softdsp-endpoint: use the transition's source_object instead of data in callbacks
there is no need to add self in the transition's data,
it's already in source_object
2020-06-18 19:26:30 +03:00
George Kiagiadakis
3966e046ae docs: add manual test instructions 2020-06-18 19:21:21 +03:00
George Kiagiadakis
fb3d5bea5c si-monitor-endpoint: add "endpoint.monitor" property on monitor endpoints 2020-06-17 14:54:20 +03:00
George Kiagiadakis
a1a718f8a1 config-endpoint: create monitors after exporting
This fixes a failure to activate the monitors if we are using
si-adapter directly instead of si-audio-softdsp-endpoint
2020-06-17 14:47:54 +03:00
George Kiagiadakis
aabf6beda7 si-convert: use passive links
Requires PipeWire < 0.3.3 or > 0.3.6 to actually work
2020-06-17 14:44:29 +03:00
George Kiagiadakis
244fa28d17 si-standard-link: allow linking MONO capture clients
In case we have a multi-channel capture device and a mono client,
treat the MONO port as UNKNOWN and let it link with the first
port available on the device

Easy to test with arecord, which by default captures in MONO
2020-06-17 12:55:12 +03:00
George Kiagiadakis
816fcaf43b meson: relax GLib dependency to 2.58 2020-06-16 19:20:13 +03:00
George Kiagiadakis
d471ba3d9c object-interest: don't use G_GNUC_FALLTRHOUGH
it requires GLib 2.60 and it's not worth it
2020-06-16 19:18:20 +03:00
George Kiagiadakis
1563eeeae6 object-interest: initialize GValue passed to g_object_get_property
g_object_get_property did not support uninitialized GValues prior
to GLib 2.60, and it's not worth requiring 2.60 for this reason

Fixes #11
2020-06-16 19:16:04 +03:00
George Kiagiadakis
707518937a tests/config-policy: add "node.autoconnect" on nodes to pass the test 2020-06-16 19:15:09 +03:00
George Kiagiadakis
881b45dc4a policy: accept endpoint IDs in node.target
this allows slightly easier testing while every client uses node.target
but it's easier to find the endpoint id than the node id
through `wpctl status`
2020-06-16 19:10:37 +03:00
George Kiagiadakis
2719169810 policy: respect endpoint.autoconnect and don't link if it's false 2020-06-16 17:39:44 +03:00
George Kiagiadakis
d50e32fc47 si-adapter/simple-node-endpoint: propagate node.autoconnect as endpoint.autoconnect 2020-06-16 17:39:25 +03:00
George Kiagiadakis
66f2e535cf config: add .node config files to create audiotestsrc / videotestsrc
and add the non-disabled filenames in .gitignore so that I can maintain
symlinks to enable them without commiting them
2020-06-16 16:06:20 +03:00
George Kiagiadakis
cf799dba16 config: remove automotive configuration
This is out-of-date and we don't need it in fact... the default
configuration can serve as a good starting point for any custom embedded
use case.
2020-06-16 15:47:09 +03:00
George Kiagiadakis
e81dc5782a config: add endpoint config files to increase priority on USB audio devices
if there is a usb device plugged, we can assume it's meant to be used
instead of the built-in audio
2020-06-16 15:44:39 +03:00
George Kiagiadakis
b3e53daf26 config: add .endpoint config file for audiotestsrc 2020-06-16 13:32:39 +03:00
George Kiagiadakis
d07f3df445 m-config-endpoint: allow specifying preferred-n-channels in endpoint.config 2020-06-16 13:31:05 +03:00
George Kiagiadakis
82197118f7 config: increase bluez & jack endpoint priorities
jack has the highest prio because if it's present, we assume the
user wants to use jack to route everything

bluez has higher prio than alsa because if it's present, we assume
the user wants to use the bluetooth device
2020-06-16 13:13:05 +03:00
George Kiagiadakis
f2d8d220eb config: rename files to have gaps in their load priorities 2020-06-16 13:08:58 +03:00
Julian Bouzas
322094565f properties: all properties from other must be included in self for the match to be valid 2020-06-16 12:56:04 +03:00
George Kiagiadakis
083b9ff878 core: wp_core_get_context -> wp_core_get_g_main_context 2020-06-16 12:53:18 +03:00
George Kiagiadakis
5069ce5eb9 wireplumber.conf: disable bluez monitor by default
- because it conflicts with pulseaudio and we actually still want
  pipewire to be able to run along pulseaudio on default setups
- and because it doesn't work well yet
2020-06-16 12:10:01 +03:00
George Kiagiadakis
be6d00d370 wireplumber.conf: ignore comments inside blocks or at line ends
replace them with spaces so that the GVariant parser ignores them
2020-06-16 12:06:26 +03:00
George Kiagiadakis
5f9212c344 si-adapter: use the clock rate defined in pipewire.conf 2020-06-15 19:09:04 +03:00
George Kiagiadakis
7bc8302740 m-monitor: connect the monitor core on activation instead of module load time
We have multiple instances of the monitor plugin, but that's ok.
connect/disonnect will not do anything bad if called multiple times

We need to connect later so that the first connection is the one from main().
Otherwise, if there is a connection error, we will see the warning from the
monitor first.
2020-06-15 18:36:33 +03:00
George Kiagiadakis
575e338f63 wpctl: status: add info about server & clients 2020-06-15 18:24:44 +03:00
George Kiagiadakis
926ee5ce9f src, modules: set PW_KEY_APP_NAME on all cores 2020-06-15 17:56:05 +03:00
George Kiagiadakis
7668f4c6c9 core: add methods to work with pw_core_info data and pw_core properties
- pw_core_info has data that represent the remote core
- pw_core properties are the properties of its pw_client,
initially inherited from the pw_context, which can be updated either
when calling pw_context_connect() or later at runtime (the pw_core
calls pw_client_update_properties() on its pw_client)

wp_core_update_properties() is made in such a way so that we can do:
```
clone = wp_core_clone(core);
wp_core_update_properties(clone, ...);
wp_core_connect(clone);
```
and get clone to have different properties than the original core,
while they still share the same pw_context underneath
2020-06-15 17:50:03 +03:00
George Kiagiadakis
0596988945 core: retrieve and store core info
also delay the "connected" signal until info is there
2020-06-15 17:49:21 +03:00
George Kiagiadakis
0d1fcd48a1 properties: add wp_properties_unref_and_take_pw_properties()
a method to take the internal pw_properties without copying
2020-06-15 17:22:47 +03:00
George Kiagiadakis
c72d126374 properties: const-ify the pw_properties in _new_wrap()
and do not allow writing to wrapped pw_properties,
since they are const now
2020-06-15 17:20:10 +03:00
George Kiagiadakis
7b5752448d doc/contributing: add a note about rebasing merge requests 2020-06-15 11:36:15 +03:00
Martin Koch, ESE GmbH
ca42b09c3d Add version requirement >= 2.60 for the GLib family of libraries
- due to usage of Reference-counted-data in lib/wptoml/array.cpp
      (requires >= 2.58, see https://developer.gnome.org/glib/stable/glib-Reference-counted-data.html)
    - and usage of G_GNUC_FALLTHROUGH in lib/wp/object-interest.c
      (requires 2.60, see https://developer.gnome.org/glib/stable/glib-Miscellaneous-Macros.html#G-GNUC-FALLTHROUGH:CAPS)

Signed-off-by: Martin Koch, ESE GmbH <martin.koch@ese.de>
2020-06-15 11:18:17 +03:00
George Kiagiadakis
b70cbca84e spa-device: store the constructor properties and use them for export + object-info
the spa object undereath doesn't do that and we lose a bunch of
properties otherwise
2020-06-15 11:10:39 +03:00
Julian Bouzas
3b4785f1a0 m-config-static-objects: use a local core for all objects 2020-06-12 15:04:36 -04:00
Julian Bouzas
40eb53a290 m-device-activation: enum profiles before activating bluetooth devices 2020-06-12 15:04:36 -04:00