Accepting request 939934 from multimedia:libs

OBS-URL: https://build.opensuse.org/request/show/939934
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/pipewire?expand=0&rev=45
This commit is contained in:
Dominique Leuenberger 2021-12-12 20:27:28 +00:00 committed by Git OBS Bridge
commit ab80ffe234
10 changed files with 189 additions and 182 deletions

View File

@ -1,25 +0,0 @@
From 651f0decea5f83730c271e9bed03cdd0048fcd49 Mon Sep 17 00:00:00 2001
From: Wim Taymans <wtaymans@redhat.com>
Date: Thu, 21 Oct 2021 11:09:48 +0200
Subject: [PATCH] cpu: fix compilation on some architectures
---
spa/plugins/support/cpu.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/spa/plugins/support/cpu.c b/spa/plugins/support/cpu.c
index ee1816512..01cff4854 100644
--- a/spa/plugins/support/cpu.c
+++ b/spa/plugins/support/cpu.c
@@ -270,7 +270,7 @@ impl_init(const struct spa_handle_factory *factory,
if ((str = spa_dict_lookup(info, SPA_KEY_CPU_VM_TYPE)) != NULL)
this->vm_type = atoi(str);
if ((str = spa_dict_lookup(info, SPA_KEY_CPU_ZERO_DENORMALS)) != NULL)
- impl_cpu_zero_denormals(this, spa_atob(str));
+ spa_cpu_zero_denormals(&this->cpu, spa_atob(str));
}
spa_log_debug(this->log, "%p: count:%d align:%d flags:%08x",
--
2.31.1

View File

@ -1,80 +0,0 @@
From c07f0ccb71a9d95944ce3e4d7e453cb50a26b0a2 Mon Sep 17 00:00:00 2001
From: Wim Taymans <wtaymans@redhat.com>
Date: Mon, 25 Oct 2021 16:11:56 +0200
Subject: [PATCH] map: make _insert_at() fail on a removed item
You are only supposed to use _insert_new()/_remove() or _insert_at()
on the map, If we detect a _insert_at() to a removed item,
return an error because else we might corrupt the free list.
Update unit test accordingly.
---
src/pipewire/map.h | 15 ++-------------
test/test-map.c | 17 +----------------
2 files changed, 3 insertions(+), 29 deletions(-)
diff --git a/src/pipewire/map.h b/src/pipewire/map.h
index fd57f7f7c..f47dfa6b3 100644
--- a/src/pipewire/map.h
+++ b/src/pipewire/map.h
@@ -182,20 +182,9 @@ static inline int pw_map_insert_at(struct pw_map *map, uint32_t id, void *data)
if (item == NULL)
return -errno;
} else {
- if (pw_map_id_is_free(map, id)) {
- uint32_t *current = &map->free_list;
- while (*current != SPA_ID_INVALID) {
- uint32_t current_id = (*current) >> 1;
- uint32_t *next = &pw_map_get_item(map, current_id)->next;
-
- if (current_id == id) {
- *current = *next;
- break;
- }
- current = next;
- }
- }
item = pw_map_get_item(map, id);
+ if (pw_map_item_is_free(item))
+ return -EINVAL;
}
item->data = data;
return 0;
diff --git a/test/test-map.c b/test/test-map.c
index dd1df77a8..b6d7681ce 100644
--- a/test/test-map.c
+++ b/test/test-map.c
@@ -188,7 +188,6 @@ PWTEST(map_insert_at_free)
int data[3] = {1, 2, 3};
int new_data = 4;
int *ptr[3] = {&data[0], &data[1], &data[3]};
- int *new_ptr = &new_data;
int idx[3];
int rc;
@@ -225,21 +224,7 @@ PWTEST(map_insert_at_free)
}
rc = pw_map_insert_at(&map, item_idx, &new_data);
- pwtest_neg_errno_ok(rc);
- pwtest_ptr_eq(new_ptr, pw_map_lookup(&map, item_idx));
-
- if (before_idx != SKIP && before_idx != item_idx) {
- rc = pw_map_insert_at(&map, before_idx, &ptr[before_idx]);
- pwtest_neg_errno_ok(rc);
- pwtest_ptr_eq(&ptr[before_idx], pw_map_lookup(&map, before_idx));
- }
-
- if (after_idx != SKIP && after_idx != item_idx) {
- rc = pw_map_insert_at(&map, after_idx, &ptr[after_idx]);
- pwtest_neg_errno_ok(rc);
- pwtest_ptr_eq(&ptr[after_idx], pw_map_lookup(&map, after_idx));
- }
-
+ pwtest_neg_errno(rc, -EINVAL);
pw_map_clear(&map);
return PWTEST_PASS;
--
GitLab

View File

@ -1,29 +0,0 @@
From 5dfc3494dc4635918e74b9f3d717a39a74b28554 Mon Sep 17 00:00:00 2001
From: Wim Taymans <wtaymans@redhat.com>
Date: Mon, 25 Oct 2021 16:15:17 +0200
Subject: [PATCH] map: use uintptr_t for the next pointer
This aligns the low bits of the next field with the low bits of the
pointer on big endian cpus.
Fixes #1747
---
src/pipewire/map.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/pipewire/map.h b/src/pipewire/map.h
index f47dfa6b3..1867fa4d3 100644
--- a/src/pipewire/map.h
+++ b/src/pipewire/map.h
@@ -74,7 +74,7 @@ extern "C" {
* first item to get re-used on the next insert.
*/
union pw_map_item {
- uint32_t next; /* next free index */
+ uintptr_t next; /* next free index */
void *data; /* data of this item, must be an even address */
};
--
GitLab

View File

@ -3,7 +3,7 @@
<service name="obs_scm" mode="disabled">
<param name="scm">git</param>
<param name="url">https://gitlab.freedesktop.org/pipewire/pipewire.git</param>
<param name="revision">refs/tags/0.3.39</param>
<param name="revision">refs/tags/0.3.40</param>
<param name="versionformat">@PARENT_TAG@</param>
<!-- <param name="revision">master</param>
<param name="versionformat">@PARENT_TAG@+git%cd.%h</param>

View File

@ -3,7 +3,3 @@ pipewire-alsa
requires "libpipewire-0_3-0-<targettype> = <version>"
pipewire-libjack-0_3
requires "libpipewire-0_3-0-<targettype> = <version>"
pipewire-modules
requires "libpipewire-0_3-0-<targettype> = <version>"
pipewire-spa-plugins-0_2
requires "libpipewire-0_3-0-<targettype> = <version>"

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:33c060d434bff4130c4640b1093119e6c46b82601e82afe3fef7bd128ee1811e
size 10106381

3
pipewire-0.3.40.obscpio Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:db983408546f6ae30870ba82650bd8de19f6750a1fbbfbab5ac88f091cb9fb06
size 10141197

View File

@ -1,3 +1,129 @@
-------------------------------------------------------------------
Sat Dec 11 16:21:56 UTC 2021 - Fabian Vogt <fabian@ritter-vogt.de>
- Drop server packages from baselibs.conf. Only the client parts
are needed in there.
-------------------------------------------------------------------
Fri Dec 10 09:31:47 UTC 2021 - Antonio Larrosa <alarrosa@suse.com>
- Minor aesthetic changes in the spec file
-------------------------------------------------------------------
Thu Dec 9 12:14:23 UTC 2021 - Neal Gompa <ngompa@opensuse.org>
- Enable AAC support for Leap 15.4+
-------------------------------------------------------------------
Thu Dec 9 11:33:29 UTC 2021 - Antonio Larrosa <alarrosa@suse.com>
- Replace the Recommends wireplumber to a Suggests since there's
already a Require dependency on a pipewire-session-manager and
when in doubt the Suggested package is selected.
-------------------------------------------------------------------
Thu Dec 9 10:34:27 UTC 2021 - Antonio Larrosa <alarrosa@suse.com>
- Unconditionally enable AAC support now that fdk-aac-free is in
Factory (adapted from SR 936225 by Neal Gompa
<ngompa@opensuse.org>)
-------------------------------------------------------------------
Fri Dec 3 09:06:42 UTC 2021 - Antonio Larrosa <alarrosa@suse.com>
- Makes sure if we're using wireplumber and pulseaudio that
we don't enable the audio devices in pipewire by requiring
wireplumber-audio or pulseaudio if wireplumber is installed
- Better integration with PulseAudio (bsc#1188516) made by tiwai:
* Add Requires pulseaudio-setup package for the extra setups
in the %post section
* Add the missing Recommends alsa-plugins-pulse to
pipewire-pulseaudio package
-------------------------------------------------------------------
Fri Nov 12 12:47:56 UTC 2021 - Bjørn Lie <bjorn.lie@gmail.com>
- Update to version 0.3.40:
* Highlights:
- Producers and consumers can now incrementally negotiate a
format by narrowing down the options. This can be used to
select an optimal combination of format and modifiers.
- Driver nodes such as the consumer of a headless compositor
can now throttle the speed based on a new trigger_done event.
- Headless compositors can now signal a damage event to
consumers to start the processing of the graph.
- Compatibility improvements in JACK.
- Draining and resuming is now working correctly in pulse and
alsa.
- Many bugfixes and improvements.
* PipeWire:
- Many BSD fixes.
- clang compilation fixes.
- Fix map implementation on big-endian machines.
- Improve tracking of param changes in pw-stream.
- Add support for renegotiation. With this change, producer and
consumer can incrementally renegotiate a format until it is
fixed. This will be used to do complex negotiation of DRM
modifiers.
- Add a trigger-done event in the stream. This can be used to
know when processing of the complete graph has finished after
issuing a trigger_process() and it can be used to throttle
processing.
- Add a RequestProcess node event and command. This can be used
by non-driver nodes to suggest to a driver to start
processing. One case is where a compositor can emit this
event as a result of a screen update to let the headless
compositor start an update.
- Fix zeroconf sample format.
- pw-mon outputs to stderr now and has colors.
* SPA:
- Fix compilation on ppc and armv7.
- Fix port type check for ALSA seq midi ports so that they are
not falsely listed as hardware.
- Fix crash when running SSE code on unsupported HW.
- The libcamera plugin was rewritten. It now supports hotplug,
format enumeration and an easier to read codebase.
- Fix compatibility some more for cards with 64 channels.
* pulse-server:
- Flush data in pause in combine-sink to avoid stray audio
fragments.
- Fix a race where not all objects were removed correctly.
- The latency calculations and setup was improved to more
closely match pulseaudio behaviour. PULSE_LATENCY_MSEC should
now resemble pulseaudio more closely.
- The drained reply is now sent only once and new data will be
accepted once the drain completes.
- Fix a potential crasher bug where the stream started
processing before the setup was completed.
- The server will now drop the client connections when the
pipewire connection is lost.
* JACK:
- Rework the jack_port_get_buffer() method to return the same
memory when called multiple times during the process()
callback. This makes things work on a new Hydrogen.
- Add an option to disable showing the monitor ports.
- JACK ports are now sorted per node/client and port_id. This
should more closely match JACK behaviour and avoid random
port order.
* v4l2:
- Fix v4l2 LD_PRELOAD script.
- Make sure we destroy the proxy when the global is destroyed.
* ALSA:
- _prepare should exit the draining state.
- Fix the precision of the _delay function by taking into
account the amount of queued samples are the correct
samplerate.
- Drop patches fixed upstream:
* 0001-cpu-fix-compilation-on-some-architectures.patch
* 0001-map-make-_insert_at-fail-on-a-removed-item.patch
* 0002-map-use-uintptr_t-for-the-next-pointer.patch
-------------------------------------------------------------------
Wed Nov 3 08:47:41 UTC 2021 - Antonio Larrosa <alarrosa@suse.com>
- Recommend wireplumber so it's preferred to pipewire-media-session
-------------------------------------------------------------------
Fri Oct 29 15:17:51 UTC 2021 - Antonio Larrosa <alarrosa@suse.com>

View File

@ -1,5 +1,5 @@
name: pipewire
version: 0.3.39
mtime: 1634742038
commit: 5b7ef959d1fed35f6ddfcf94b6f57891fae23b31
version: 0.3.40
mtime: 1636633289
commit: 7afd80052b7c49754a13c9ab49c368f95b60e0a7

View File

@ -35,7 +35,6 @@
%define with_ldacBT 0
%endif
%bcond_with aac
%bcond_with aptx
%if 0%{?suse_version} >= 1550
%bcond_without libcamera
@ -43,8 +42,18 @@
%bcond_with libcamera
%endif
%if 0%{?sle_version} && 0%{?sle_version} < 150400
%bcond_with aac
%else
%bcond_without aac
%endif
%if %{?pkg_vcmp:%{pkg_vcmp meson >= 0.59.0}}%{!?pkg_vcmp:0}
%bcond_without pipewire_jack_devel
%endif
Name: pipewire
Version: 0.3.39
Version: 0.3.40
Release: 0
Summary: A Multimedia Framework designed to be an audio and video server and more
License: MIT
@ -53,9 +62,7 @@ URL: https://pipewire.org/
Source0: %{name}-%{version}.tar.xz
Source1: %{name}-rpmlintrc
Source99: baselibs.conf
Patch0: 0001-cpu-fix-compilation-on-some-architectures.patch
Patch1: 0001-map-make-_insert_at-fail-on-a-removed-item.patch
Patch2: 0002-map-use-uintptr_t-for-the-next-pointer.patch
BuildRequires: docutils
BuildRequires: doxygen
BuildRequires: fdupes
@ -120,6 +127,9 @@ Requires: %{name}-session-manager
Requires: %{name}-spa-plugins-%{spa_ver_str} = %{version}
Requires: %{name}-spa-tools = %{version}
Requires: %{name}-tools = %{version}
Suggests: wireplumber
# This tries to ensure the user either uses pulseaudio or wireplumber enables the audio in pipewire
Requires: ((wireplumber-audio or pulseaudio) if wireplumber)
%{?systemd_ordering}
%description
@ -291,6 +301,10 @@ Group: Development/Libraries/C and C++
Recommends: %{name} >= %{version}-%{release}
Requires: %{libpipewire} >= %{version}-%{release}
Conflicts: pulseaudio
%if 0%{suse_version} >= 1550
Requires(post): pulseaudio-setup
%endif
Recommends: alsa-plugins-pulse
# Virtual Provides to support swapping between PipeWire-PA and PA
Provides: pulseaudio-daemon
@ -347,7 +361,7 @@ export CC=gcc-9
%endif
-Dpipewire-jack=enabled \
-Djack=enabled \
%if %{?pkg_vcmp:%{pkg_vcmp meson >= 0.59.0}}%{!?pkg_vcmp:0}
%if %{with pipewire_jack_devel}
-Djack-devel=true \
%else
-Djack-devel=false \
@ -452,6 +466,10 @@ if [ ! -L %{_sysconfdir}/systemd/user/sockets.target.wants/pipewire-pulse.socket
# https://bugzilla.opensuse.org/show_bug.cgi?id=1186561
EOF
fi
%if 0%{suse_version} >= 1550
# Update the /etc/profile.d/pulseaudio.* files
setup-pulseaudio --auto > /dev/null
%endif
%preun pulseaudio
%systemd_user_preun pipewire-pulse.service pipewire-pulse.socket
@ -477,12 +495,12 @@ fi
%{_userunitdir}/pipewire.socket
%{_mandir}/man1/pipewire.1%{ext_man}
%{_mandir}/man5/pipewire.conf.5%{ext_man}
%dir %{_datadir}/pipewire
%dir %{_datadir}/pipewire/
%{_datadir}/pipewire/pipewire.conf
%{_datadir}/pipewire/client.conf
%{_datadir}/pipewire/client-rt.conf
%{_datadir}/pipewire/pipewire-pulse.conf
%ghost %dir %{_localstatedir}/lib/pipewire
%ghost %dir %{_localstatedir}/lib/pipewire/
%ghost %{_localstatedir}/lib/pipewire/pipewire_post_workaround
%files -n %{libpipewire}
@ -509,8 +527,8 @@ fi
%{_libdir}/pipewire-%{apiver}/jack/libjack.so
%{_libdir}/pipewire-%{apiver}/jack/libjacknet.so
%{_libdir}/pipewire-%{apiver}/jack/libjackserver.so
%if %{?pkg_vcmp:%{pkg_vcmp meson >= 0.59.0}}%{!?pkg_vcmp:0}
%{_includedir}/jack
%if %{with pipewire_jack_devel}
%{_includedir}/jack/
%{_libdir}/pkgconfig/jack.pc
%endif
@ -576,12 +594,12 @@ fi
%{_libdir}/pipewire-%{apiver}/libpipewire-module-pulse-tunnel.so
%{_libdir}/pipewire-%{apiver}/libpipewire-module-zeroconf-discover.so
%{_libdir}/pipewire-%{apiver}/libpipewire-module-rt.so
%dir %{_libdir}/pipewire-%{apiver}/v4l2
%dir %{_libdir}/pipewire-%{apiver}/v4l2/
%{_libdir}/pipewire-%{apiver}/v4l2/libpw-v4l2.so
%dir %{_datadir}/alsa-card-profile
%dir %{_datadir}/alsa-card-profile/mixer
%dir %{_datadir}/alsa-card-profile/
%dir %{_datadir}/alsa-card-profile/mixer/
%{_datadir}/alsa-card-profile/mixer/*
%dir %{_datadir}/pipewire/filter-chain
%dir %{_datadir}/pipewire/filter-chain/
%{_datadir}/pipewire/filter-chain/demonic.conf
%{_datadir}/pipewire/filter-chain/sink-dolby-surround.conf
%{_datadir}/pipewire/filter-chain/sink-eq6.conf
@ -625,30 +643,30 @@ fi
%{_libdir}/spa-%{spa_ver}/videotestsrc/libspa-videotestsrc.so
%{_libdir}/spa-%{spa_ver}/volume/libspa-volume.so
%dir %{_libdir}/spa-%{spa_ver}
%dir %{_libdir}/spa-%{spa_ver}/alsa
%dir %{_libdir}/spa-%{spa_ver}/audioconvert
%dir %{_libdir}/spa-%{spa_ver}/audiomixer
%dir %{_libdir}/spa-%{spa_ver}/bluez5
%dir %{_libdir}/spa-%{spa_ver}/control
%dir %{_libdir}/spa-%{spa_ver}/volume
%dir %{_libdir}/spa-%{spa_ver}/ffmpeg
%dir %{_libdir}/spa-%{spa_ver}/jack
%dir %{_libdir}/spa-%{spa_ver}/
%dir %{_libdir}/spa-%{spa_ver}/alsa/
%dir %{_libdir}/spa-%{spa_ver}/audioconvert/
%dir %{_libdir}/spa-%{spa_ver}/audiomixer/
%dir %{_libdir}/spa-%{spa_ver}/bluez5/
%dir %{_libdir}/spa-%{spa_ver}/control/
%dir %{_libdir}/spa-%{spa_ver}/volume/
%dir %{_libdir}/spa-%{spa_ver}/ffmpeg/
%dir %{_libdir}/spa-%{spa_ver}/jack/
%if %{with libcamera}
%dir %{_libdir}/spa-%{spa_ver}/libcamera
%dir %{_libdir}/spa-%{spa_ver}/libcamera/
%endif
%dir %{_libdir}/spa-%{spa_ver}/support
%dir %{_libdir}/spa-%{spa_ver}/v4l2
%dir %{_libdir}/spa-%{spa_ver}/videoconvert
%dir %{_libdir}/spa-%{spa_ver}/support/
%dir %{_libdir}/spa-%{spa_ver}/v4l2/
%dir %{_libdir}/spa-%{spa_ver}/videoconvert/
%if %{with_vulkan}
%dir %{_libdir}/spa-%{spa_ver}/vulkan
%dir %{_libdir}/spa-%{spa_ver}/vulkan/
%endif
%dir %{_libdir}/spa-%{spa_ver}/audiotestsrc
%dir %{_libdir}/spa-%{spa_ver}/videotestsrc
%dir %{_libdir}/spa-%{spa_ver}/test
%dir %{_libdir}/spa-%{spa_ver}/audiotestsrc/
%dir %{_libdir}/spa-%{spa_ver}/videotestsrc/
%dir %{_libdir}/spa-%{spa_ver}/test/
%dir %{_datadir}/spa-%{spa_ver}
%dir %{_datadir}/spa-%{spa_ver}/bluez5
%dir %{_datadir}/spa-%{spa_ver}/
%dir %{_datadir}/spa-%{spa_ver}/bluez5/
%{_datadir}/spa-%{spa_ver}/bluez5/bluez-hardware.conf
%files devel
@ -659,11 +677,12 @@ fi
%{_includedir}/spa-%{spa_ver}/
%files doc
%dir %{_datadir}/doc/pipewire
%{_datadir}/doc/pipewire/html
%dir %{_datadir}/doc/pipewire/
%{_datadir}/doc/pipewire/html/
%files pulseaudio
%{_bindir}/pipewire-pulse
%{_mandir}/man1/pipewire-pulse.1%{ext_man}
%{_userunitdir}/pipewire-pulse.*
%ghost %{_localstatedir}/lib/pipewire/pipewire-pulseaudio_post_workaround
@ -674,8 +693,8 @@ fi
%dir %{_datadir}/alsa/alsa.conf.d
%{_datadir}/alsa/alsa.conf.d/50-pipewire.conf
%{_datadir}/alsa/alsa.conf.d/99-pipewire-default.conf
%dir %{_sysconfdir}/alsa
%dir %{_sysconfdir}/alsa/conf.d
%dir %{_sysconfdir}/alsa/
%dir %{_sysconfdir}/alsa/conf.d/
%config(noreplace) %{_sysconfdir}/alsa/conf.d/50-pipewire.conf
%config(noreplace) %{_sysconfdir}/alsa/conf.d/99-pipewire-default.conf