pipewire: 0.3.45 -> 0.3.46

This commit is contained in:
Tim Biermann 2022-02-17 12:45:24 +01:00
parent be691df3b7
commit 27bd59b622
Signed by: tb
GPG Key ID: 42F8B4E30B673606
4 changed files with 16 additions and 174 deletions

View File

@ -102,12 +102,16 @@ drwxr-xr-x root/root usr/include/spa-0.2/spa/debug/
-rw-r--r-- root/root usr/include/spa-0.2/spa/debug/buffer.h
-rw-r--r-- root/root usr/include/spa-0.2/spa/debug/dict.h
-rw-r--r-- root/root usr/include/spa-0.2/spa/debug/format.h
-rw-r--r-- root/root usr/include/spa-0.2/spa/debug/log.h
-rw-r--r-- root/root usr/include/spa-0.2/spa/debug/mem.h
-rw-r--r-- root/root usr/include/spa-0.2/spa/debug/node.h
-rw-r--r-- root/root usr/include/spa-0.2/spa/debug/pod.h
-rw-r--r-- root/root usr/include/spa-0.2/spa/debug/types.h
drwxr-xr-x root/root usr/include/spa-0.2/spa/graph/
-rw-r--r-- root/root usr/include/spa-0.2/spa/graph/graph.h
drwxr-xr-x root/root usr/include/spa-0.2/spa/interfaces/
drwxr-xr-x root/root usr/include/spa-0.2/spa/interfaces/audio/
-rw-r--r-- root/root usr/include/spa-0.2/spa/interfaces/audio/aec.h
drwxr-xr-x root/root usr/include/spa-0.2/spa/monitor/
-rw-r--r-- root/root usr/include/spa-0.2/spa/monitor/device.h
-rw-r--r-- root/root usr/include/spa-0.2/spa/monitor/event.h
@ -190,14 +194,15 @@ drwxr-xr-x root/root usr/lib/alsa-lib/
-rwxr-xr-x root/root usr/lib/alsa-lib/libasound_module_ctl_pipewire.so
-rwxr-xr-x root/root usr/lib/alsa-lib/libasound_module_pcm_pipewire.so
lrwxrwxrwx root/root usr/lib/libpipewire-0.3.so -> libpipewire-0.3.so.0
lrwxrwxrwx root/root usr/lib/libpipewire-0.3.so.0 -> libpipewire-0.3.so.0.345.0
-rwxr-xr-x root/root usr/lib/libpipewire-0.3.so.0.345.0
lrwxrwxrwx root/root usr/lib/libpipewire-0.3.so.0 -> libpipewire-0.3.so.0.346.0
-rwxr-xr-x root/root usr/lib/libpipewire-0.3.so.0.346.0
drwxr-xr-x root/root usr/lib/pipewire-0.3/
-rwxr-xr-x root/root usr/lib/pipewire-0.3/libpipewire-module-access.so
-rwxr-xr-x root/root usr/lib/pipewire-0.3/libpipewire-module-adapter.so
-rwxr-xr-x root/root usr/lib/pipewire-0.3/libpipewire-module-client-device.so
-rwxr-xr-x root/root usr/lib/pipewire-0.3/libpipewire-module-client-node.so
-rwxr-xr-x root/root usr/lib/pipewire-0.3/libpipewire-module-echo-cancel.so
-rwxr-xr-x root/root usr/lib/pipewire-0.3/libpipewire-module-fallback-sink.so
-rwxr-xr-x root/root usr/lib/pipewire-0.3/libpipewire-module-filter-chain.so
-rwxr-xr-x root/root usr/lib/pipewire-0.3/libpipewire-module-link-factory.so
-rwxr-xr-x root/root usr/lib/pipewire-0.3/libpipewire-module-loopback.so
@ -221,6 +226,8 @@ drwxr-xr-x root/root usr/lib/pkgconfig/
-rw-r--r-- root/root usr/lib/pkgconfig/libpipewire-0.3.pc
-rw-r--r-- root/root usr/lib/pkgconfig/libspa-0.2.pc
drwxr-xr-x root/root usr/lib/spa-0.2/
drwxr-xr-x root/root usr/lib/spa-0.2/aec/
-rwxr-xr-x root/root usr/lib/spa-0.2/aec/libspa-aec-null.so
drwxr-xr-x root/root usr/lib/spa-0.2/alsa/
-rwxr-xr-x root/root usr/lib/spa-0.2/alsa/libspa-alsa.so
drwxr-xr-x root/root usr/lib/spa-0.2/audioconvert/

View File

@ -1,6 +1,5 @@
untrusted comment: verify with /etc/ports/contrib.pub
RWSagIOpLGJF33gxF1DAMCHNE2xdCwotTHdogHLPz79WTiEfKjYJmtsDDrOO7htob6qVhcc3WUQm93N3gLKor81ZXu2j+w7ckA8=
SHA256 (Pkgfile) = b249fdbe6fbe54b06afe1f0caea1247172e32d669fdbd1a5e459343eae9bef47
SHA256 (.footprint) = 0b42fe03a0c889407ea6854fad2b571a6870dcaedfd7e5da84c091989a939b66
SHA256 (pipewire-0.3.45.tar.gz) = b6858beb3c688d0c905b8263c9418b58aaf9b5e7bc74a8c8d9a9307351da248c
SHA256 (97a5fe80c1d0fb0d8173a61a87051053cff7a5c2.patch) = 7ebe706119f0de55c0ae1b795bb52c8533c3deec16edc1e87c1338838444d1d8
RWSagIOpLGJF3/x1H6ZnhzQ48SjMucPofjpvyl7HxFInqgiVMnF84NPRbiTQInwlXMcgxMxmXuYjQVEqoTPHhraqjHcQ7nZfMwo=
SHA256 (Pkgfile) = e12e0aa2bcdafa2d759946895f0686368ecab6a46c008267255d97e9ea63b658
SHA256 (.footprint) = e7dc0987f6e678afaa08f153c1adfb6b381ebb420d6a0cb8cc7c1e97f55a505e
SHA256 (pipewire-0.3.46.tar.gz) = 3a5496ce19f5600914deaa75522fbd844dad5d4eb7aa28b529e3c97db3884072

View File

@ -1,161 +0,0 @@
From 97a5fe80c1d0fb0d8173a61a87051053cff7a5c2 Mon Sep 17 00:00:00 2001
From: Pauli Virtanen <pav@iki.fi>
Date: Thu, 3 Feb 2022 19:23:23 +0200
Subject: [PATCH] spa/alsa-udev: fix /proc/asound handling without
CONFIG_SND_VERBOSE_PROCFS
For kernels compiled with CONFIG_SND_VERBOSE_PROCFS=n, the pcmXX
/proc/asound entries do not exist. In that case, the "device busy"
check cannot be done, but we should still check existence of PCM devices
correctly.
Count the number of PCM devices from /dev/snd, which should work also
without /proc/asound or /sysfs/class/sound.
---
spa/plugins/alsa/alsa-udev.c | 88 ++++++++++++++++++++++++++++++------
1 file changed, 73 insertions(+), 15 deletions(-)
diff --git a/spa/plugins/alsa/alsa-udev.c b/spa/plugins/alsa/alsa-udev.c
index 572bb8a32..08373239d 100644
--- a/spa/plugins/alsa/alsa-udev.c
+++ b/spa/plugins/alsa/alsa-udev.c
@@ -246,6 +246,60 @@ static void unescape(const char *src, char *dst)
*d = 0;
}
+static int check_device_pcm_class(const char *devname)
+{
+ FILE *f;
+ char path[PATH_MAX];
+ char buf[16];
+ size_t sz;
+
+ /* Check device class */
+ spa_scnprintf(path, sizeof(path), "/sys/class/sound/%s/pcm_class",
+ devname);
+ f = fopen(path, "r");
+ if (f == NULL)
+ return -errno;
+ sz = fread(buf, 1, sizeof(buf) - 1, f);
+ buf[sz] = '\0';
+ fclose(f);
+ return spa_strstartswith(buf, "modem") ? -ENXIO : 0;
+}
+
+static int get_num_pcm_devices(unsigned int card_id)
+{
+ char prefix[32];
+ DIR *snd = NULL;
+ struct dirent *entry;
+ int num_dev = 0;
+ int res;
+
+ /* Check if card has PCM devices, without opening them */
+
+ spa_scnprintf(prefix, sizeof(prefix), "pcmC%uD", card_id);
+
+ if ((snd = opendir("/dev/snd")) == NULL)
+ return -errno;
+
+ while ((errno = 0, entry = readdir(snd)) != NULL) {
+ if (!(entry->d_type == DT_CHR &&
+ spa_strstartswith(entry->d_name, prefix)))
+ continue;
+
+ res = check_device_pcm_class(entry->d_name);
+ if (res == 0 || res == -ENOENT) {
+ /* count device also if sysfs status file not there */
+ ++num_dev;
+ }
+ }
+ if (errno != 0)
+ res = -errno;
+ else
+ res = num_dev;
+
+ closedir(snd);
+ return res;
+}
+
static int check_device_available(struct impl *this, struct device *device, int *num_pcm)
{
char path[PATH_MAX];
@@ -256,14 +310,26 @@ static int check_device_available(struct impl *this, struct device *device, int
struct dirent *entry, *entry_pcm;
int res;
+ res = get_num_pcm_devices(device->id);
+ if (res < 0) {
+ spa_log_error(this->log, "Error finding PCM devices for ALSA card %u: %s",
+ (unsigned int)device->id, spa_strerror(res));
+ return res;
+ }
+ *num_pcm = res;
+
+ spa_log_debug(this->log, "card %u has %d pcm device(s)", (unsigned int)device->id, *num_pcm);
+
/*
* Check if some pcm devices of the card are busy. Check it via /proc, as we
* don't want to actually open any devices using alsa-lib (generates uncontrolled
* number of inotify events), or replicate its subdevice logic.
+ *
+ * The pcmXX directories do not exist if kernel is compiled with
+ * CONFIG_SND_VERBOSE_PROCFS=n. In that case, the busy check always
+ * succeeds.
*/
- *num_pcm = 0;
-
spa_scnprintf(path, sizeof(path), "/proc/asound/card%u", (unsigned int)device->id);
if ((card = opendir(path)) == NULL)
@@ -274,16 +340,9 @@ static int check_device_available(struct impl *this, struct device *device, int
spa_strstartswith(entry->d_name, "pcm")))
continue;
- /* Check device class */
- spa_scnprintf(path, sizeof(path), "/sys/class/sound/pcmC%uD%s/pcm_class",
+ spa_scnprintf(path, sizeof(path), "pcmC%uD%s",
(unsigned int)device->id, entry->d_name+3);
- f = fopen(path, "r");
- if (f == NULL)
- goto done;
- sz = fread(buf, 1, sizeof(buf) - 1, f);
- buf[sz] = '\0';
- fclose(f);
- if (spa_strstartswith(buf, "modem"))
+ if (check_device_pcm_class(path) < 0)
continue;
/* Check busy status */
@@ -319,8 +378,6 @@ static int check_device_available(struct impl *this, struct device *device, int
if (errno != 0)
goto done;
- ++*num_pcm;
-
closedir(pcm);
pcm = NULL;
}
@@ -352,15 +409,16 @@ static int emit_object_info(struct impl *this, struct device *device)
* device->emitted to true. alsalib functions can be used after that.
*/
+ snprintf(path, sizeof(path), "hw:%u", id);
+
if ((res = check_device_available(this, device, &pcm)) < 0)
return res;
if (pcm == 0) {
spa_log_debug(this->log, "no pcm devices for %s", path);
device->ignored = true;
- return 0;
+ return -ENODEV;
}
- snprintf(path, sizeof(path), "hw:%u", id);
spa_log_debug(this->log, "emitting card %s", path);
device->emitted = true;
--
GitLab

View File

@ -5,10 +5,9 @@
# Optional: alsa-ucm-conf avahi bluez gst-plugins-base jack libldac pulseaudio rtkit v4l2 vulkan-loader wireplumber
name=pipewire
version=0.3.45
release=2
source=(https://github.com/PipeWire/pipewire/archive/$version/$name-$version.tar.gz
97a5fe80c1d0fb0d8173a61a87051053cff7a5c2.patch)
version=0.3.46
release=1
source=(https://github.com/PipeWire/pipewire/archive/$version/$name-$version.tar.gz)
build() {
prt-get isinst avahi || PKGMK_PW+=' -Davahi=disabled'
@ -19,8 +18,6 @@ build() {
prt-get isinst v4l-utils || PKGMK_PW+=' -Dv4l2=disabled'
prt-get isinst vulkan-loader || PKGMK_PW+=' -Dvulkan=disabled -Dvulkan=disabled'
patch -Np1 -d $name-$version -i $SRC/97a5fe80c1d0fb0d8173a61a87051053cff7a5c2.patch
meson setup $name-$version build $PKGMK_PW \
-D prefix=/usr \
--buildtype=plain \