Commit Graph

366 Commits

Author SHA1 Message Date
Eli Schwartz
b5f031bc15 meson: fix conflicting use of feature-based dependency lookups
When spa-plugins is enabled, the gio-2.0 global dependency is
overwritten.

When bluez support is enabled, OR when gsettings is enabled, the gio-2.0
dependency is then detected as found. This means that
pipewire-module-protocol-pulse can end up enabling gsettings support
even if it has been forcibly turned off.

Rename the meson variables to ensure they are looked up separately.
2024-06-30 18:39:38 +00:00
Barnabás Pőcze
ec521ca870 meson.build: enable -Werror=format 2024-06-27 21:18:06 +00:00
Wim Taymans
7b4c0dd5ec 1.2 2024-06-27 15:31:45 +02:00
Wim Taymans
ae7ec595a2 1.1.83 2024-06-18 12:47:40 +02:00
Wim Taymans
1ae4374ccf Fix compilation with -Werror=float-conversion
Better make the conversions explicit so that we don't get any surprises.

Fixes #4065
2024-06-18 12:17:56 +02:00
Eli Schwartz
acd5bf60b9 meson: fix webrtc-audio-processing dependency ignoring configure args
Most dependencies use meson "feature" options for optional
functionality. This allows people to disable them, if they don't want
them, through the power of tristate decision-making.

This particular dependency does something a bit more complicated than
can be described by simply passing feature options to the required
kwarg. It:

- tries to look for two different names of the dependency
- selects different version ranges, depending on the dependency name
- has a hole in the middle of the versions

Unfortunately, `required: false` for the first dependency isn't
equivalent to a tristate decision-making process. We have to manually
code the logic ourselves.

The problem is that when we look up the first name, we cannot pass the
feature option in because if the option is force enabled, then the
dependency lookup fails and configuration never tries to find the older
version instead.

But also, we can't just say it *isn't* required, because if the option
is force *disabled* but it is installed on the system, we still find it
and build against it.

One solution would be using meson 0.60's support for multiple dependency
names:

```
dependency('webrtc-audio-processing-1', 'webrtc-audio-processing',
    version : ['>= 0.2'],
    required: get_option('echo-cancel-webrtc'),
)
```

Unfortunately, this too doesn't work since we could end up detecting 1.1
(the hole in the middle) which is invalid.

Instead, we do a bit of checking for tristate values before deciding to
invoke `dependency()`. This lets us guarantee that disabled dependencies
are well and truly disabled.

Bug: https://bugs.gentoo.org/933218
Fixes: #3678
2024-06-11 07:16:30 +00:00
Wim Taymans
7eeb657d37 1.1.82 2024-05-24 11:48:53 +02:00
Wim Taymans
e37a1e25fc 1.1.81 2024-05-16 10:25:45 +02:00
Barnabás Pőcze
8b35b00d82 meson.build: add -Werror=incompatible-pointer-types 2024-04-23 14:49:34 +02:00
Pauli Virtanen
29614a2c46 doc: fix workaround for old doxygen versions
Fix workaround for old doxygen versions, and put a version requirement
for Doxygen.
2024-04-23 10:59:24 +00:00
Robert Mader
f1b75fc6f8 gst: Add support for DMA_DRM / explicit modifiers
Gstreamer 1.24 added and largely switched to a new, modifier aware
DMABuf API. Unfortunately that breaks the existing DMABuf support in the
PW Gst element.

Add support for the new API.
2024-03-05 12:08:32 +01:00
Wim Taymans
f1a6fabb6c meson: add options to set server and client RT priority
Make a rtprio-server and rtprio-client option. Leave the server
priority by default to 88 but lower client priority to 83. JACK
does something similar by setting clients to rtprio-server - 5.

Make module-rt use the client priority by default and bump the server
priority explicitly in the config file.

Leave the pulse-server to the default rtprio-client, there is no reason
to lower this any further because it is really just a regular client.

Bump the ffado packetizer thread to rtprio-server + 5 because that is
also what JACK does.

88 is still much higher than the value of 60 that JACK uses in
Fedora but now this is at least configurable.
2024-02-15 11:53:32 +01:00
Barnabás Pőcze
b9b5a26199 Apply 1 suggestion(s) to 1 file(s) 2024-01-12 11:35:17 +00:00
Sergio Costas Rodriguez
d568dcd64f pipewire-pulse: add snap permissions support
SNAP containers have two main "audio" security rules:

 * audio-playback: the applications inside the container can
   send audio samples into a sink

 * audio-record: the applications inside the container can
   get audio samples from a source

Also, old SNAP containers had the "pulseaudio" rule, which just
exposed the pulseaudio socket directly, without limits. This
is similar to the current Flatpak audio permissions.

In the pulseaudio days, a specific pulseaudio module was used
that checked the permissions given to the application and
allowed or forbade access to the pulseaudio operations.
With the change to pipewire, this functionality must be
implemented in pipewire-pulse to guarantee the sandbox
security.

This patch adds support for sandboxing permissions in the
pulseaudio module, and implements support for the SNAP audio
security model, thus forbiding a SNAP application to record
audio unless it has permissions to do so.

The current code for pipewire-pulseaudio checks the permissions
of the snap and adds three properties to each new client:

 * pipewire.snap.id: contains the Snap ID of the client.

 * pipewire.snap.audio.playback: its value is 'true' if the client
   has permission to play audio, or 'false' if not.

 * pipewire.snap.audio.record: its value is 'true' if the client
   has permission to record audio, or 'false' if not.

These properties must be processed by wireplumber to add or
remove access permissions to the corresponding nodes. That
code is available in a separate patch: https://gitlab.freedesktop.org/pipewire/wireplumber/-/merge_requests/567
2024-01-12 11:35:17 +00:00
Mark Gallagher
bd87902da6 Add a build option to specify whether pulse gsettings schema should be installed 2023-12-16 21:10:00 +01:00
Wim Taymans
c21ea06944 1.1.0
master will now be 1.1.x and result in 1.1.9x prereleases that lead up
to the next stable 1.2.0 version.
2023-12-04 12:02:53 +01:00
Wim Taymans
4debdcd40b 1.0.0 2023-11-26 09:02:52 +01:00
Pauli Virtanen
ffa52fdbc1 meson.build: separate options for installing man pages or docs 2023-11-25 00:14:18 +02:00
Pauli Virtanen
0fbcc87314 doc: make all manpages with Doxygen
Use (fixed-up) Doxygen manpage output for all program & module manpages.

This also allows formatting the manual pages properly in the HTML docs.

The Markdown pages work properly only with Doxygen >= 1.9.7, older
versions put them to wrong place in the HTML docs.
2023-11-22 20:10:49 +02:00
Pauli Virtanen
c29d4d4ab7 meson.build: make pandoc optional
Skip only pandoc-requiring parts if it is not available.
2023-11-21 17:00:45 +00:00
Pauli Virtanen
843e733479 doc: add documentation for pipewire-pulse modules
Add (minimal) reference documentation for each pipewire-pulse module.

Add some preprocessing to substitute @pulse_module_options@ in docs from
PW_KEY_MODULE_USAGE so the module options don't need to be repeated.

Produce Doxygen docs + generate manpages pipewire-pulse-modules.7,
pipewire-pulse-module-*.7
2023-11-20 08:41:13 +00:00
Pauli Virtanen
21854f24a5 doc: generate man-pages also for pipewire modules
Use pandoc + some processing to convert Doxygen html output to man
pages.

Requires pandoc & python for building.

Generates manpages: libpipewire-modules.7, libpipewire-module-*.7
2023-11-19 16:39:15 +00:00
Wim Taymans
7db1e7f643 0.3.85 2023-11-16 10:38:12 +01:00
Pauli Virtanen
636a9c611d acp: Respect XDG base directory spec when loading configs
Backport from Pulseaudio. Reimplement get_data_path. We'll look for the
override files similarly as we do for other config files
(XDG_CONFIG_HOME then /etc then install location), instead of looking at
the Pulseaudio locations ~/.local/share/pulseaudio etc.

Upstream commits:

From: SimonP <simonp.git@gmail.com>

alsa-mixer: Respect XDG base directory spec when loading profile sets

Try $XDG_DATA_HOME, then $XDG_DATA_DIRS, and finally fall back to old behaviour.

From: SimonP <simonp.git@gmail.com>

alsa-mixer: Respect XDG base directory spec when loading path configs

Try $XDG_DATA_HOME, then $XDG_DATA_DIRS, and finally fall back to old
behaviour (prefix-defined directory).

core-util: Ignore non-absolute XDG base dirs

These are invalid per the spec.
2023-11-09 20:36:15 +00:00
Wim Taymans
cf46c4f5af 0.3.84 2023-11-02 11:13:40 +01:00
Wim Taymans
6fd7f39dbe 0.3.83 2023-10-19 13:10:50 +02:00
Wim Taymans
27426e12c5 meson: add FASTPATH again
It got accidentally removed
2023-10-19 11:31:51 +02:00
Wim Taymans
771f71f622 alsa: force the rate and quantum for iec958 formats
See #2284
2023-10-19 10:43:42 +02:00
Wim Taymans
8a9117567c 0.3.82 2023-10-13 10:08:20 +02:00
Pauli Virtanen
72462ebd07 module-protocol-native: add module argument 'sockets'
Add module argument 'sockets' for creating multiple sockets clients can
connect to.

Also allow setting socket file permissions.
2023-10-11 19:08:18 +03:00
Wim Taymans
4b27807292 pulse-server: add /core message handlers for memory debugging
Add malloc-info and malloc-trim message handlers.
2023-10-06 16:49:03 +02:00
Wim Taymans
181fbfee6d 0.3.81 2023-10-06 11:37:06 +02:00
Wim Taymans
b1f8af9538 meson: use major version in versions
To prepare for a major version update to 1 later.
2023-10-04 11:42:28 +02:00
Wim Taymans
8680c74d1b check if malloc_trim() is available 2023-10-04 10:59:26 +02:00
Wim Taymans
1f1c308c97 aec: support both webrtc versions
Version 1 does not seem to be packaged in many distros and so they would
need to revert the patch or disable AEC. Enabling both allows for things
to move forwards gracefully.
2023-09-14 15:35:40 +02:00
Wim Taymans
35cca08d2b 0.3.80 2023-09-14 11:06:20 +02:00
Arun Raghavan
c842ef7071 aec-webrtc: Bump to webrtc-audio-processing-1
Upstream updated drops beamforming, adds a new gain controller and
includes a bunch of updates to the AEC engine (internally AEC3).
2023-09-06 09:31:06 +00:00
q66
9f7d960c66 meson: better check for module dlopen dir
The ${LIB} token is a glibc extension, so it is incorrect to
use it on all Linux. Doing so will break e.g. with musl libc.
2023-08-31 10:29:32 +00:00
Wim Taymans
b5c3f21792 0.3.79 2023-08-29 09:45:26 +02:00
Wim Taymans
188f784430 0.3.78 2023-08-22 11:12:24 +02:00
Wim Taymans
31cd694602 0.3.77 2023-08-04 10:25:37 +02:00
Nedko Arnaudov
1cb17c05e9 Use 0.3.PWVER for soname versioning, instead of 0.PWVER.0 2023-08-01 11:08:56 +02:00
Wim Taymans
9bcc90fdc3 0.3.76 2023-07-27 17:54:12 +02:00
Wim Taymans
a3bd0f7a0a 0.3.75 2023-07-21 11:04:12 +02:00
Wim Taymans
da7f398299 0.3.74 2023-07-12 11:18:43 +02:00
Wim Taymans
44deacbc67 0.3.73 2023-07-06 11:42:24 +02:00
Barnabás Pőcze
3c6d1686ca meson.build: add "-Werror=return-type" 2023-07-03 19:40:31 +02:00
Barnabás Pőcze
edbf2dcb4d meson.build: require strict prototypes 2023-07-03 19:40:31 +02:00
Barnabás Pőcze
12a8a916dd meson.build: make old stype defs/decls errors 2023-07-03 19:40:31 +02:00
Wim Taymans
98f138dbe0 filter-chain: move sofa and lv2 to external modules
dlopen lv2 and sofa plugin modules instead of hardcoding them into the+
filter-chain. This also makes it possible to add more plugin module
types externally.
2023-06-29 14:04:40 +02:00