Commit graph

3628 commits

Author SHA1 Message Date
Wim Taymans
ae263eeffc pw-dump: only dump changed metadata entries 2021-01-14 21:14:16 +01:00
Wim Taymans
688b3c5ed4 pw-dump: only output [] when something changed 2021-01-14 20:17:22 +01:00
Wim Taymans
a97d4c44b4 pw-metadata: remove is when key == NULL 2021-01-14 20:11:43 +01:00
Wim Taymans
13cef576c9 pw-dump: dump metadata contents
Fix some leaks
2021-01-14 20:11:15 +01:00
Wim Taymans
792c01aede pw-dump: trigger change in metadata
so that it is displayed
2021-01-14 19:22:40 +01:00
Wim Taymans
b118a84a60 module-metadata: set factory id in properties 2021-01-14 19:22:18 +01:00
Wim Taymans
be107317f5 Silence some dbus errors
Log info when a service is not running and disable it.
2021-01-14 17:11:42 +01:00
Wim Taymans
7347b5ef05 alsa: add api.alsa.headroom setting
Can be used to tweak the extra distance kept between the hardware
and software pointers when reading and writing.

See #289
2021-01-14 17:10:05 +01:00
Wim Taymans
abe73c9146 meson: use global b_pie to build PIE executables 2021-01-14 16:29:32 +01:00
Wim Taymans
a6433b0839 pw-dump: mark new objects without proxy as changed
So that they are actually printed.
2021-01-14 15:39:02 +01:00
Wim Taymans
a1cb786ee7 impl-module: turn an error into debug
The error is usually reported or ignored by the caller.
2021-01-14 15:08:14 +01:00
Wim Taymans
3162465f6f portal: error->warn when the portal pid is unknown 2021-01-14 15:07:42 +01:00
Wim Taymans
7eac9874f0 daemon: add nofail option to the modules section
Use nofail on rtkit when it's not available.
2021-01-14 15:06:24 +01:00
Wim Taymans
de851018c1 media-session: fall back to card_name for description
Also try to use the alsa.card_name property for the description if
there is nothing else.

Fixes #524
2021-01-13 19:49:24 +01:00
Wim Taymans
c9354c238f Add -fPIE to installed executables
Fixes #570
2021-01-13 19:40:37 +01:00
Wim Taymans
fee0c2679c daemon: install new config files
See #207
2021-01-13 14:50:52 +01:00
Wim Taymans
c771bc9b5a media-session: move bluetooth properties to bluez config 2021-01-13 11:42:08 +01:00
Wim Taymans
8aec26f5bd v4l2-monitor: make nicer names 2021-01-12 21:51:10 +01:00
Wim Taymans
fac80e76d2 media-session: add conf file for v4l2 and bluez as well 2021-01-12 20:42:58 +01:00
Wim Taymans
4cba8fc7e9 pulse-server: implement set_sample_rate 2021-01-12 13:14:05 +01:00
Wim Taymans
219248d43e connection: guard against NULL 2021-01-12 10:13:02 +01:00
Pauli Virtanen
84ebce147a module-protocol-native: add test for reentering 2021-01-12 10:13:02 +01:00
Pauli Virtanen
23f010541f module-protocol-native: make demarshaling safe vs. reentering
The message structures returned by pw_protocol_native_connection_get_next
point to data that is contained in the buffer of the connection.

The data was invalidated when pw_protocol_native_connection_get_next was
called the next time, which made the connection loop non-reentrant, in
cases where it was re-entered from demarshal callbacks.

Fix this by allocating new buffers when reentering and stashing the old
buffers onto a stack. The returned message structure is also stored on
the stack to make lifetimes to match.
2021-01-12 10:13:02 +01:00
Wim Taymans
5f66650f7c daemon: don't pass (null) as argument 2021-01-11 20:40:26 +01:00
Wim Taymans
24c7f45118 alsa-monitor: also try card_name as description
See #524
2021-01-11 15:23:59 +01:00
Wim Taymans
9862560f55 impl-core: avoid destroying the core object
Avoid destroying id 0 and return some errors.

See #560
2021-01-11 13:19:07 +01:00
Wim Taymans
878240e30a pw-dump: add simple monitor option (-m) 2021-01-11 10:24:39 +01:00
Wim Taymans
4d15df6f24 bluez5: improve device and node properties
Set form factor, name routes based on form factor.
Improve profile names
Make card and node names like pulseaudio, with bt address in them.
Fill in port type in the route info.

Fixes #544
2021-01-10 20:56:27 +01:00
Wim Taymans
86576f1e63 bluez5: don't crash when proxy is not created yet
We export a node and get a handle (of type ClientNode). The
session manager then later creates a proxy for the new object. We
can't assume the proxy is created yet when the device emits an
event so check for this.

This is a temporary bandaid. We should likely use get_node() to
create our own proxy for this purpose.

Fixes #552
2021-01-09 20:07:32 +01:00
Pauli Virtanen
d87f838e09 media-session: don't write to freed memory in sm_object_destroy
Unref of node->handle may also free obj, if it was created by
init_object.
2021-01-09 20:37:01 +02:00
Wim Taymans
7ae1ea1420 pulse-server: set default channel_map
Set a default channel map when not otherwise set. Makes pulseeffects
work.
2021-01-09 12:46:00 +01:00
Jarkko Sakkinen
ec9dfe72ff systemd: Add systemd-user-unit-dir override
Add a new build option 'system-user-unit=dir', which can be used to
override the pkg-config default value.

By doing this, it becomes more practical to make a local unprivileged
build of the latest PipeWire:

$ meson --prefix=~/.local build
$ meson configure build -Dpipewire-alsa=false
$ meson configure build -Dsystemd-user-unit-dir=~/.config/systemd/user
$ meson configure build -Dudevrulesdir="`mktemp -d`"
$ ninja -C build install

For a local build enabling ALSA plugins is not plausible.

JACK needs a simple addition to the ~/.profile:

export LD_LIBRARY_PATH=$HOME/.local/lib/x86_64-linux-gnu/pipewire-0.3/jack

Finally, the genuine PulseAudio must be masked and local services
enabled:

systemctl --user enable pipewire.socket
systemctl --user enable pipewire-pulse.socket
systemctl --user mask pulseaudio.service

A sanity check [*] shows that nothing has leaked out of the home
directory (even though at least on my Debian 10 system PolKit still
asks for authorization during the meson build).

Not perfect, but lowers a barrier to run the development version a lot,
as that does not anymore to trash your system.

[*]  find / -name "*pipewire*" \! -path "/home/*"  \! -path "/var/lib/flatpak/*" 2> /dev/null

Signed-off-by: Jarkko Sakkinen <jarkko@suppilovahvero.lan>
2021-01-09 12:11:22 +01:00
Wim Taymans
f94d2e7da5 pulse-server: use rate match to read from ringbuffer
Use the rate match io are to read the exact amount of samples we
need for this cycle from the ringbuffer. We can then request lower
latency.

There will also be less buffering in the audioconverter, which makes
our timestamps more accurate.
2021-01-08 17:22:15 +01:00
Wim Taymans
03430da64a stream: notify about port IO areas as well 2021-01-08 16:52:42 +01:00
Wim Taymans
84eed9ef6f pw-cat: use none as default latency for record
Don't force the record latency to the large latency we use for playback
(100ms) but set it to none, which means use defaults.
2021-01-08 16:30:57 +01:00
Wim Taymans
4440ede41c bluez5: add SBC XQ support with a config option 2021-01-08 13:00:44 +01:00
Wim Taymans
9a03f8769e pw-cli: handle unquoted strings
Use parse_string for everything else to use it as a string value.
Make it possible to use short name for the param.

so now you can do:

pw-cli set-param 55 Props '{ channelVolumes: [ 0.3, 0.3 ], channelMap: [ FR,FL ] }'
2021-01-08 12:23:02 +01:00
Wim Taymans
1084306f4d disable i18n stuff, something doesn't work on bots 2021-01-08 11:04:03 +01:00
Wim Taymans
ef6bb2195a pw-dump: dump all objects
Dump all objects, not only the ones for which we have a class.
2021-01-08 10:51:37 +01:00
Wim Taymans
3c2794dcc9 add i18n support 2021-01-08 10:26:46 +01:00
Wim Taymans
deb3fa1d9b media-session: handle device events
The object config event should set props on the object.
2021-01-07 17:30:10 +01:00
Wim Taymans
c430b1de58 jack: move monitor ports after playback ports
Enumerate monitor ports after their playback ports, like how
jack does this.

See #527
2021-01-05 15:38:52 +01:00
Wim Taymans
bad9a36a84 rtkit: set nice-level to -11 by defaukt
To mimic pulseaudio.
2021-01-05 12:33:41 +01:00
Wim Taymans
962bf4d897 media-session: clean proxy and handle in destroy
After we called destroy on the handle and proxy we should not
try to access them anymore so we set them to NULL.

See #534
2021-01-05 10:05:30 +01:00
Pauli Virtanen
b76bcdc70d pulse-server: NULL means default only if id==INVALID
The default values also only apply for sources/sinks which have
defaults.
2021-01-04 23:54:48 +02:00
Nicolai Syvertsen
7a82be3361 pw-top: Fallback to app name if no node name/desc exists 2021-01-04 19:26:44 +00:00
Wim Taymans
518365e350 pulse-server: fix module arg parsing
Parse the module arguments according to the pulseaudio syntax,
not our own syntax (which requires "" around a , delimter). Fixes
audio.position=FL,FR argument.

See #527
2021-01-04 17:25:28 +01:00
Wim Taymans
0bf7b07d91 pulse-server: improve warning 2021-01-02 20:37:44 +01:00
Wim Taymans
b4f359ed77 media-session: ensure unique node names
Fixes #525
2021-01-02 20:07:27 +01:00
Wim Taymans
498b4bd080 media-session: ensure unique device.name
See #525
2021-01-02 20:00:03 +01:00