Commit graph

230 commits

Author SHA1 Message Date
Wim Taymans e857856be7 0.3.30 2021-06-09 09:14:11 +02:00
Peter Hutterer d9cc1a25f1 Include the valgrind headers in our tree
These headers are designed for including in the project. So the user doesn't
need to install valgrind-devel and we don't have to worry about whether the
headers are available or not.
2021-06-07 10:44:27 +00:00
Barnabás Pőcze 4e5b20b1f5 meson.build: add devenv
Add meson devenv with the appropriate env variables
set up. Largely based on pw-uninstalled.sh
2021-06-05 15:49:17 +02:00
Wim Taymans 1b484867eb 0.3.29 2021-06-03 12:01:53 +02:00
Arun Raghavan d95870d8d3 module-echo-cancel: Wire up the webrtc echo canceller
Mostly uses the existing infrastructure, but the webrtc canceller has a
fixed blocksize, so we:

  1. Use the canceller blocksize if configured
  2. Accumulate output data in a ringbuffer
  3. Push out the data in the required chunk size
2021-06-02 17:56:40 -04:00
Fabrice Fontaine fa64d93e64 fix linking with -latomic
Linking with -latomic has been added to pipewire-jack since
b8c58c74d8

However, this is not the right place to add this dependency, atomic_dep
should be added to pipewire_dep to avoid the following build failure:

/home/giuliobenetti/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/sparc-buildroot-linux-uclibc/9.3.0/../../../../sparc-buildroot-linux-uclibc/bin/ld: src/pipewire/libpipewire-0.3.so.0.326.0.p/filter.c.o: in function `impl_node_process':
filter.c:(.text+0xf28): undefined reference to `__atomic_fetch_add_4'

Indeed, atomic operation such as __atomic_fetch_add is used in libcamera
as well as in ./spa/plugins/libcamera/libcamera_wrapper.cpp,
./spa/include/spa/utils/ringbuffer.h and ./spa/include/spa/graph/graph.h

Fixes:
 - http://autobuild.buildroot.org/results/b5305e8e7dd1a5e8bfaba72b06251056ba7d1af1

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
2021-05-24 08:33:50 +00:00
Wim Taymans fb55cc4786 0.3.28 2021-05-19 10:11:36 +02:00
Wim Taymans 1609126bcd conf: move config file to datadir
Install the config file in $PREFIX/share/pipewire so that a factory
reset can be done by wiping /etc and /home.
Add this new directory to the search path.
System wide config can still be done in /etc, user config in
$HOME/.config/pipewire/ by copying files from $PREFIX/share/pipewire

Fixes #1191
2021-05-17 16:22:31 +02:00
Wim Taymans 31d79f4c9b Clarify license
fixes #1174
2021-05-14 12:09:33 +02:00
Wim Taymans 6744934734 zeroconf: add avahi zerconf discover module
Discovers remote sinks and sources and load the tunnel module to
make a local sink and source for them.
2021-05-14 09:09:48 +02:00
Wim Taymans 44f326013b module-pulse-tunner: add module to tunnel to PulseAudio
Add a module that can make a source or sink that tunnels audio
to or from a (remote) PulseAudio server.
2021-05-12 15:56:59 +02:00
Wim Taymans e598d0a422 0.3.27 2021-05-06 10:22:37 +02:00
Fabrice Fontaine ce89ce3844 meson.build: fix build with uclibc-ng
Build with uclib-ng fails since commit
a4b0b9afe5 on:

FAILED: src/pipewire/libpipewire-0.3.so.0.326.0.p/impl-core.c.o
/srv/storage/autobuild/run/instance-2/output-1/host/bin/mips64el-linux-gcc -Isrc/pipewire/libpipewire-0.3.so.0.326.0.p -Isrc/pipewire -I../src/pipewire -Isrc -I../src -I. -I.. -Ispa/include -I../spa/include -fdiagnostics-color=always -pipe -Wall -Winvalid-pch -Wextra -Wpedantic -std=gnu99 -O3 -fvisibility=hidden -Werror=suggest-attribute=format -Wsign-compare -Wpointer-arith -Wpointer-sign -Wformat -Wformat-security -Wimplicit-fallthrough -Wmissing-braces -Wtype-limits -Wvariadic-macros -Wno-missing-field-initializers -Wno-unused-parameter -Wno-pedantic -Wold-style-declaration -Wunused-result -DFASTPATH -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -fPIC -pthread -DHAVE_CONFIG_H -D_GNU_SOURCE -D_POSIX_C_SOURCE -MD -MQ src/pipewire/libpipewire-0.3.so.0.326.0.p/impl-core.c.o -MF src/pipewire/libpipewire-0.3.so.0.326.0.p/impl-core.c.o.d -o src/pipewire/libpipewire-0.3.so.0.326.0.p/impl-core.c.o -c ../src/pipewire/impl-core.c
../src/pipewire/impl-core.c:54:9: error: conflicting types for 'getrandom'
 ssize_t getrandom(void *buf, size_t buflen, unsigned int flags) {
         ^~~~~~~~~
In file included from ../src/pipewire/impl-core.c:34:
/srv/storage/autobuild/run/instance-2/output-1/host/mips64el-buildroot-linux-uclibc/sysroot/usr/include/sys/random.h:28:12: note: previous declaration of 'getrandom' was here
 extern int getrandom(void *__buf, size_t count, unsigned int flags)
            ^~~~~~~~~

Fix this build failure by adding -D_GNU_SOURCE as getrandom is protected
by:

if defined __UCLIBC_LINUX_SPECIFIC__ && defined __USE_GNU

Extracted from:
 - https://github.com/wbx-github/uclibc-ng/blob/master/libc/sysdeps/linux/common/sys/random.h

Fixes:
 - http://autobuild.buildroot.org/results/a45f0ee009d90cef867dee4b1093225610fa10df

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
2021-05-05 08:04:51 +00:00
Evgeniy Khramtsov 4d064a3718 meson: prefer libintl on FreeBSD
FreeBSD does not have gettext in libc.
It is implemented in the third-party library.
2021-04-23 22:57:51 +03:00
Wim Taymans f0fc4f7fc6 0.3.26 2021-04-22 11:58:59 +02:00
Wim Taymans 5f09e302a9 pipewire: add i18n initialization
Initialize the i18n support.
Add two methods to call the i18n interface.
Add defines for _() and N_() for translations.
2021-04-15 17:56:40 +02:00
Peter Hutterer 223f20709d meson: replace join_paths(a, b) with a / b
More readable and from the meson reference manual:
(since 0.49.0) Using the/ operator on strings is equivalent to calling join_paths.
2021-04-15 06:57:00 +00:00
Peter Hutterer 6eb4114238 meson: fix handling of the alsa option
Option 'pipewire-alsa' is a meson feature and defaults to 'auto'. This is
different to 'disabled', so on systems where alsa's deps weren't available
we would still end up trying to build. Switch to checking alsa_dep.found()
instead.
2021-04-14 09:59:06 +10:00
Wim Taymans c324107211 0.3.25 2021-04-06 15:51:02 +02:00
Arseny Maslennikov 403f27c531 meson, pw-top: use ncursesw
Some PulseAudio clients are known to use localised client and
stream names as values for the respective PulseAudio props, most
notably plain old pavucontrol.

We call setlocale before anything else for ncurses to display
localised text correctly. We also want to link with ncursesw, which
supports multibyte Unicode locales.
2021-03-25 11:22:52 +00:00
Wim Taymans c81d44e8a9 0.3.24 2021-03-18 14:50:04 +01:00
Jan Alexander Steffens (heftig) 9cdf3d1a0b meson.build: Check strndupa using has_header_symbol
It's a macro here, which has_function misses, at least from meson
0.57.1.
2021-03-13 14:49:35 +00:00
Thibault Saunier 485bae5eb0 meson: Use feature options everywhere it makes sense 2021-03-10 20:18:34 +00:00
Wim Taymans 68f6c75cae 0.3.23 2021-03-04 16:21:21 +01:00
Wim Taymans a4b0b9afe5 build: check for getrandom and sys/random.h
Fixes #833
2021-03-04 10:57:48 +01:00
Wim Taymans 052bc85dad jack: ship our own jack headers and build against them 2021-03-03 15:54:48 +01:00
Gleb Popov dbc9a520ef Check for sys/mount.h and sys/vfs.h headers and include them conditionally 2021-02-24 19:29:57 +00:00
Gleb Popov fd544544ab Link v4l2 plugin to libinotify on FreeBSD 2021-02-24 19:29:57 +00:00
Wim Taymans 22d563720a 0.3.22 2021-02-18 11:12:15 +01:00
Carlos Rafael Giani b17fe4aba4 meson: Make SDL2 and libsndfile dependencies configurable
This is important for cross-platform build frameworks such as Yocto
where the build configurations must be deterministic. In this case, if
some other build dependency pulled in SDL2, then the meson.build logic
would suddenly enable extra features that would not have been built
otherwise. By allowing for explicitely enabling/disabling SDL2 and sndfile
depending bits, this problem is fixed.
2021-02-15 17:12:48 +01:00
Wim Taymans 885748dfbd 0.3.21 2021-02-03 15:20:26 +01:00
Wim Taymans aee694fb82 0.3.20 2021-01-20 15:54:15 +01:00
Wim Taymans abe73c9146 meson: use global b_pie to build PIE executables 2021-01-14 16:29:32 +01:00
Frédéric Danis 7bd86df6df bluez5: Add simple HFP AG support to backend-native 2021-01-12 11:21:55 +01:00
Wim Taymans 3c2794dcc9 add i18n support 2021-01-08 10:26:46 +01:00
Wim Taymans b2b45abe01 0.3.19 2021-01-05 13:39:10 +01:00
Wim Taymans ae8f8b25f6 pw-top: add new tool
Uses ncurses to display all drivers and nodes with their latency,
error count and DSP usage.
2020-12-25 16:33:54 +01:00
Wim Taymans 91b0d3bb39 Remove pipewire-libpulse
We use the original pulseaudio client library and the replacement
server pipewire-pulse.
2020-12-17 15:44:49 +01:00
Wim Taymans e7dffd64eb 0.3.18 2020-12-15 12:45:21 +01:00
Andres Freund 1e89e7559b Fix paths used in 'make run'.
In particular ACP_PATHS_DIR, ACP_PROFILES_DIR ended up pointing to the
build directory, despite only existing in the source directory.

I also adjusted PIPEWIRE_CONFIG_DIR to be explicit about referencing
the build directory, given that the other environment variables are
doing so.

Fixes: #448
2020-12-07 15:46:21 +01:00
Haochen Tong 3ba73bde48 meson: let meson detect supported compiler flags 2020-11-28 21:19:25 +01:00
Wim Taymans f5f5beb0ec 0.3.17 2020-11-26 16:33:29 +01:00
Wim Taymans 09d373f094 0.3.16 2020-11-19 16:27:20 +01:00
Greg V 90ade199e6 Provide a strndupa implementation when it is absent
strndupa is a glibc exclusive, not even musl implements it
2020-11-09 11:14:20 +00:00
Sergey Bugaev 28af82e6d9 meson: rename HAVE_SYSTEMD_DAEMON to HAVE_SYSTEMD
This variable describes whether we have systemd and libsystemd,
not just <systemd/sd-daemon.h>

While at it, sneak in a fix for the warning message:
"systemd should never ever be capitalized".

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
2020-11-06 15:51:24 +00:00
Wim Taymans 16872549e3 0.3.15 2020-11-04 10:43:40 +01:00
Wim Taymans 94dbd4f9b8 warn about and fix some -Wpointer-sign warnings 2020-11-02 09:03:53 +01:00
Wim Taymans 3960a88478 0.3.14 2020-10-30 15:35:26 +01:00
Wim Taymans 9c0ff170f9 pulse: add volume change example 2020-10-22 16:47:24 +02:00
Wim Taymans 4b7b2a9a10 gst: add option to disable device provider 2020-10-13 12:40:48 +02:00
Wim Taymans d7714f734d 0.3.13 2020-09-28 16:08:10 +02:00
Wim Taymans fc0354ae1d 0.3.12 2020-09-18 12:02:08 +02:00
Wim Taymans b0c758719d 0.3.11 2020-09-10 13:13:36 +02:00
Simon McVittie b8c58c74d8 Link pipewire-jack to libatomic if required
This is necessary on some 32-bit architectures that implement atomic
operations on 64-bit quantities as library calls, including Debian's
armel and mipsel ports.

Signed-off-by: Simon McVittie <smcv@debian.org>
2020-09-07 15:17:57 +00:00
Frédéric Danis 7bad76737e bluez5: Create backend skeleton for HSP/HFP support using hsphfpd
As hsphfpd is a prototype and its API subject to change, this backend is
disable by default.

This skeleton connects to hsphfpd daemon and list the managed devices.
2020-08-19 17:49:36 +00:00
Wim Taymans 69be14186e 0.3.10 2020-08-18 13:19:12 +02:00
Wim Taymans add30965e3 meson: rename uninstalled target to pw-uninstalled
It does not seem to work anymore with recent versions.
2020-08-12 17:36:41 +02:00
Wim Taymans db12f47505 0.3.9 2020-08-04 14:30:27 +02:00
Wim Taymans 6f2e274b15 protocol: add a few more options for XDG_RUNTIME_DIR
PIPEWIRE_CORE can be used to specify a server name.
PIPEWIRE_REMOTE can be used to specify what server name to
connect to.

Either use the absolute path of the name to create and connect
to a server, or use a relative path. For a relative path, the
server name will be completed by prefixing the following paths
in order:

PIPEWIRE_RUNTIME_DIR environment variable,
XDG_RUNTIME_DIR environment variable,
HOME environment variable,
USERPROFILE environment variable,
home directory as stored in the password database.

Fixes #259
2020-07-31 12:46:58 +02:00
Wim Taymans 229fad4691 0.3.8 2020-07-28 15:20:04 +02:00
Wim Taymans 154f981f97 Add mixer paths and profile-sets as well
So we don't have to rely on pulseaudio installed ones
2020-07-28 12:30:32 +02:00
Frédéric Danis db0c224b06 bluez5: Make native and ofono backends optional 2020-07-22 18:59:58 +02:00
Wim Taymans 0b3e9edaa2 0.3.7 2020-07-21 12:06:39 +02:00
Wim Taymans 1612f5e4d2 alsa-acp: Add libacp based card device
libacp is a port and wrapper around the pulseaudio card profile code.
It uses a set of templates for construct a card profile and mixer port
settings. It also has support for UCM when available for the hardware.
2020-07-06 12:20:09 +02:00
Simon McVittie b852b58f82 Optionally install examples and tests
This makes it easier to test PipeWire in its "as-installed" state,
for example in an OS distribution.

The .test metadata files in ${datadir}/installed-tests/${package} are
a convention taken from GNOME's installed-tests initiative, allowing a
generic test-runner like gnome-desktop-testing to discover and run tests
in an automatic way.

The installation path ${libexecdir}/installed-tests/${package} is also
a convention borrowed from GNOME's installed-tests initiative.

In addition to the automated tests, I've installed example executables
in the same place, for manual testing. They could be separated into
a different directory if desired, but they seem like they have more
similarities with the automated tests than differences: both are there
to test that PipeWire works correctly, and neither should be relied on
for production use. Some examples are installed in deeper subdirectories
to avoid name clashes.

Signed-off-by: Simon McVittie <smcv@debian.org>
2020-06-16 17:58:02 +00:00
Wim Taymans b04552b252 0.3.6 2020-06-10 11:53:32 +02:00
Simon McVittie e493be3844 scripts: Use special ${LIB} token for architecture-independence
On GNU/Linux systems, the literal string '${LIB}' in dynamic linker
paths expands to "lib", a biarch libQUAL directory such as "lib64", or
a Debian-style multiarch directory such as "lib/x86_64-linux-gnu".
If we're installing libraries to such a directory, and we have both
word-sizes' compatibility libraries available, then pw-pulse can
use LD_LIBRARY_PATH='/usr/${LIB}/pipewire-0.3/pulse' to make both
i386 and x86_64 programs load the correct version.

Signed-off-by: Simon McVittie <smcv@debian.org>
2020-06-05 13:40:50 +00:00
Martin Koch 77860ef348 add version requirement for vulkan library dependency
due to usage of VK_ERROR_OUT_OF_POOL_MEMORY, VK_ERROR_INVALID_EXTERNAL_HANDLE,
	VK_API_VERSION_1_1 and VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT
	introduced in version 1.1.69

Signed-off-by: Martin Koch <martin.koch@ese.de>
2020-06-04 18:11:48 +00:00
Wim Taymans c546167ad3 require meson 0.49 2020-05-20 15:26:35 +02:00
Martin Koch cee1a26be6 build: skip unsupported compiler option
-Wimplicit-fallthrough for gcc version before 7.x

Signed-off-by: Martin Koch <martin.koch@ese.de>
2020-05-13 08:11:30 +00:00
Wim Taymans ba215efed0 0.3.5 2020-05-11 13:35:32 +02:00
Wim Taymans 011992e774 meson: try to compile a little NEON program to be sure
Fixes #235
2020-05-08 22:12:24 +02:00
Wim Taymans b9bb318cb7 alsa: install conf files 2020-05-02 10:43:10 +02:00
Wim Taymans 979a81a70d meson: add -Wformat
cc1: warning: ‘-Wformat-security’ ignored without ‘-Wformat’ [-Wformat-security]

Fixes #234
2020-05-01 11:05:38 +02:00
Wim Taymans 33398d7de8 0.3.4 2020-04-30 17:55:54 +02:00
Wim Taymans dc331aa562 add more warnings and fix one 2020-04-30 16:07:23 +02:00
Wim Taymans 002bcae856 0.3.3 2020-04-30 13:46:39 +02:00
Wim Taymans a81e269a7e neon: fix neon detection and compilation 2020-04-03 13:30:08 +02:00
Wim Taymans 7a29c15628 enable more warnings
Fix some warnings
2020-04-01 12:51:42 +02:00
Wim Taymans 67a5dd35be resample: add neon optimizations 2020-03-27 08:27:11 -04:00
Wim Taymans f0f3a0a660 0.3.2 2020-03-26 12:34:54 +01:00
Gleb Popov f22b7b22a8 Define alsa_dep a bit earlier and even in case the option is off to fix meson setup:
src/examples/meson.build:47:12 uses alsa_dep unconditionally.
2020-03-24 12:29:46 +01:00
Wim Taymans 8a2af908a7 small optimizations
Add some SPA_LIKELY
Enable FASTPATH by default
2020-03-18 15:43:29 +01:00
Wim Taymans 72d70b0f48 Add and fix some more warnings
Fixes #216
2020-03-17 11:37:56 +01:00
Ariel D'Alessandro 80ea7d230c meson.build: Define missing sndfile dependency
The audioconvert tool checks for sndfile dependency, which is missing in
case pw-cat option is disabled.

Signed-off-by: Ariel D'Alessandro <ariel@vanguardiasur.com.ar>
2020-03-06 18:12:10 -03:00
Wim Taymans 74a1632f07 0.3.1 2020-03-06 19:05:26 +01:00
Wim Taymans bdeeebfdd4 enable and fix -Werror=suggest-attribute=format 2020-02-20 18:20:04 +01:00
Wim Taymans 020ac545a8 0.3.0 2020-02-20 15:33:31 +01:00
Wim Taymans 18590b7e0e 0.2.97 2020-02-19 20:24:51 +01:00
Wim Taymans 945da1e6f3 0.2.96 2020-02-11 16:06:27 +01:00
Wim Taymans 4906a172e1 0.2.95 2020-02-07 09:39:14 +01:00
Wim Taymans 070ca1d588 0.2.94 2020-02-05 16:30:20 +01:00
Wim Taymans 95ecbacfe0 meson: install headers in versioned paths
Make sure all headers and plugins are installed in versioned paths
so that we can parallel install versions if we want.
2020-02-05 16:28:22 +01:00
Wim Taymans 65caf8832c spa: install in versioned directory
So that we can run old and new plugins side by side.
2020-01-29 15:51:41 +01:00
Wim Taymans 6cc180f252 0.2.93 2020-01-28 15:49:18 +01:00
Wim Taymans c047bab910 rename pipewire tools
Use the pw- prefix for all pipewire tools. This makes the
commands shorter but also avoids conflicts with password
and patchwork tools (pwcli is taken, pwconv is maybe we someday
can make).

pipewire-monitor -> pw-mon
pipewire-cli -> pw-cli
pipewire-dot -> pw-dot
pwcat -> pw-cat
2020-01-27 15:42:59 +01:00
Pantelis Antoniou 588e9562f9 pwcat: simple native playback/record tool
pwcat is analogous to pacat of PulseAudio which implements
both playback and recording capability.

Only wav files are supported for now, and you can use the
handy pwplay and pwrecord aliases for easy use.

Playback a wav file
  $ pwplay foo.wav

Record a wav file
  $ pwrecord -r 44100 -c 1 -f s16 foo.wav

Signed-off-by: Pantelis Antoniou <pantelis.antoniou@konsulko.com>
2020-01-27 12:23:15 +01:00
Jan Grulich 962c3ff1a6 Bump version to distinguish between stable bugfix release and pre-release
The upcoming PW version has been already released as 0.2.9x, while using 0.2.9 means we
still use a bugfix release of PW 0.2 version. Without the proper version bump, one cannot
use ifdefs and support both PW 0.2 and PW 0.3
2020-01-21 12:50:34 +01:00
Wim Taymans bac6bf090c make symlinks to replacement libs for uninstalled script 2020-01-16 13:26:47 +01:00
Wim Taymans e29969f937 Use build_root to generate Makefile
Don't hardcode the buildroot but use the value from meson.

Based on patch by Jan Koester <jan.koester@gmx.net>

Fixes #202
2020-01-08 15:41:01 +01:00