Commit graph

398 commits

Author SHA1 Message Date
Wim Taymans
fd60e04525 1.4.9 2025-10-09 11:14:51 +02:00
Wim Taymans
8b43ed5c91 1.4.8 2025-09-11 10:12:34 +02:00
Wim Taymans
1c542e9a0c 1.4.7 2025-07-23 17:42:58 +02:00
Wim Taymans
83a155d0c0 1.4.6 2025-06-27 13:16:18 +02:00
Wim Taymans
83ada1e086 1.4.5 2025-06-04 10:59:16 +02:00
Wim Taymans
3f79bcae5d 1.4.4 2025-05-29 09:17:47 +02:00
Wim Taymans
331d5e0351 1.4.3 2025-05-22 10:59:37 +02:00
Wim Taymans
d20a1523b6 1.4.2 2025-04-14 11:46:02 +02:00
Wim Taymans
2eb8cf5dc7 1.4.1 2025-03-14 11:07:06 +01:00
sunyuechi
e16c184228 Add x86 CPU check in meson.build for clang build fix
have_avx = cc.has_argument(avx_args)

gcc generates an error when AVX is unsupported, whereas clang only
produces a warning.

Thus, using Clang on the RISC-V platform incorrectly enables AVX file
compilation, leading to build failures.
2025-03-14 10:15:56 +01:00
Nikolay Borodin
2397a984f7 spa: alsa: allow building without UMP in libalsa
Allow building with older libalsa releases that don't have UMP.
2025-03-11 12:27:18 +01:00
Wim Taymans
df1c36aec2 1.4.0 2025-03-06 13:11:38 +01:00
Wim Taymans
e67c1bc734 1.3.83 2025-02-20 15:19:41 +01:00
Wim Taymans
7e5cd195ac 1.3.82 2025-02-06 11:37:00 +01:00
Sam James
edcecd8975
meson.build: drop -Wno-error=strict-aliasing
This was added in error (88873e295b) but
we discussed it in !2180 and it turned out CFLAGS="... -fstrict-aliasing"
was set in the environment, overriding the earlier -fno-strict-aliasing
already set in meson.build (which we're keeping here).

That is, when -fno-strict-aliasing is in-effect, there's already no
need for -Wno-error=strict-aliasing (as the warnings aren't emitted), but
if there *is* a need for a -Wno-error=strict-aliasing for a user, it
means they're (likely unintentionally) enabling strict-aliasing and we
certainly want to make them aware of that.
2025-01-24 06:15:05 +00:00
Wim Taymans
ae758885dd 1.3.81 2025-01-23 09:52:29 +01:00
Arun Raghavan
19c15e2e90 meson: Correctly use fallback for webrtc-audio-processing
If system deps are not found, we need to fallback to
webrtc-audio-processing-2, not webrtc-audio-processing (i.e. 0.3).

Fixes: https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/4493
2025-01-09 15:33:32 -05:00
Arun Raghavan
71e403bbdb spa: aec: Add support for webrtc-audio-processing-2 2025-01-09 12:06:58 +00:00
Barnabás Pőcze
705c2a652b pipewire: module-vban: fix vban serial header
The expression `VBAN_PROTOCOL_SERIAL | vban_BPSList[14]` is assigned
to an 8 bit field of the header, but, `vban_BPSList[14]` being
115200, it does not fit. Instead, its index, 14, should be
placed in the header.

In addition to fixing the issue, add `-Werror=constant-conversion`,
and clang diagnostic that catches such issues.

Fixes: 1a5514e5cf ("module-vban: create streams per stream_name")
2024-12-14 23:09:45 +01:00
Wim Taymans
2b24b27f7f meson: move some filter-graph deps to spa
The filter-graph deps can now be in spa meson
2024-12-09 11:30:04 +01:00
Philip Withnall
88873e295b build: Explicitly disable -Werror=strict-aliasing
Pipewire is designed to be built without strict aliasing enabled (as
evidenced by already hard-coding `-fno-strict-aliasing`). In case people
have strict aliasing warnings enabled by default in their build
environment, explicitly disable errors from those.

Signed-off-by: Philip Withnall <pwithnall@gnome.org>
2024-11-22 16:24:51 +00:00
Wim Taymans
7f8ce35709 filter-chain: add support for fftw in the convolver
It's faster than pffft.
2024-10-18 16:26:39 +02:00
Arun Raghavan
050ae8cc56 meson: Prepend some environment variables
We should prepend rather than override these, so we can stack
environments if we want.
2024-10-09 19:39:15 +00:00
psykose
2d071d658f spa: use a separate logind dependency separate from systemd
non-systemd systems also have logind, in the form of elogind, which works to
resolve the v4l2 video source race just as well. permit finding elogind, by
using a separate dep object.
2024-09-21 21:56:34 +00:00
sunyuechi
8166b9c580 spa/support: implement RISCV V CPU detection 2024-09-18 10:40:48 +00:00
Philippe Normand
5ed170f6c4 meson: Fix typo in GStreamer dependencies mapping
Without this the device provider cannot be enabled when building PipeWire as a
GStreamer subproject.
2024-09-11 13:14:26 +00:00
Wim Taymans
2cbcdbc579 videoconvert: add an ffmpeg based video converter
To activate:

PIPEWIRE_PROPS='{ video.adapt.converter = video.convert.ffmpeg }' build/src/examples/video-play

This makes it possible to start firefox with mjpg capture and then
video-play and it will decode the mjpeg transparently. Works for other
incompatible video formats as well, as long as they can be mmapped.

Ideally this should use something GPU accelerated and this is what the
vulkan converter will do.
2024-09-06 12:27:02 +02:00
Nedko Arnaudov
d85c6212b3 jack: set current pipewire version in jack.pc file
jack[server] version has 3 for major
and pipewire's "1000*major + 100*minor + micro" as minor version
2024-08-29 14:22:46 +02:00
Arun Raghavan
70a7bae5d7 resampler: Precompute some common filter coefficients
While this is quite fast on x86 (order of a few microseconds), the
computation can take a few milliseconds on ARM (measured at 1.9ms (32000
-> 48000) and 3.3ms (32000 -> 44100) on a Cortex A53).

Let's precompute some common rates so that we can avoid this overhead on
each stream (or any other audioconvert) instantiation. The approach
taken here is to write a little program to create the resampler
instance, and run that on the host at compile-time to generate some
common rate conversions.
2024-08-08 00:30:24 -04:00
Dylan Aïssi
0c5b2f1154 meson: allow fallback to find_library for readline detection
Fixes: 050a51aa (" meson_options: Add readline option")

Signed-off-by: Dylan Aïssi <dylan.aissi@collabora.com>
2024-07-31 15:39:38 +00:00
Wim Taymans
db31586298 development is 1.3.0 2024-07-30 12:07:20 +02:00
Wim Taymans
65f067347d require newer alsa 1.2.10 for UMP support 2024-07-30 10:06:41 +02:00
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