Accepting request 931141 from home:iznogood:branches:multimedia:libs

- 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

OBS-URL: https://build.opensuse.org/request/show/931141
OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/pipewire?expand=0&rev=27
This commit is contained in:
Antonio Larrosa 2021-11-16 13:48:45 +00:00 committed by Git OBS Bridge
parent 8ee7ffce00
commit 2ef744cb87
9 changed files with 88 additions and 145 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"> <service name="obs_scm" mode="disabled">
<param name="scm">git</param> <param name="scm">git</param>
<param name="url">https://gitlab.freedesktop.org/pipewire/pipewire.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="versionformat">@PARENT_TAG@</param>
<!-- <param name="revision">master</param> <!-- <param name="revision">master</param>
<param name="versionformat">@PARENT_TAG@+git%cd.%h</param> <param name="versionformat">@PARENT_TAG@+git%cd.%h</param>

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,81 @@
-------------------------------------------------------------------
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> Wed Nov 3 08:47:41 UTC 2021 - Antonio Larrosa <alarrosa@suse.com>

View File

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

View File

@ -44,7 +44,7 @@
%endif %endif
Name: pipewire Name: pipewire
Version: 0.3.39 Version: 0.3.40
Release: 0 Release: 0
Summary: A Multimedia Framework designed to be an audio and video server and more Summary: A Multimedia Framework designed to be an audio and video server and more
License: MIT License: MIT
@ -53,9 +53,7 @@ URL: https://pipewire.org/
Source0: %{name}-%{version}.tar.xz Source0: %{name}-%{version}.tar.xz
Source1: %{name}-rpmlintrc Source1: %{name}-rpmlintrc
Source99: baselibs.conf 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: docutils
BuildRequires: doxygen BuildRequires: doxygen
BuildRequires: fdupes BuildRequires: fdupes
@ -665,6 +663,7 @@ fi
%files pulseaudio %files pulseaudio
%{_bindir}/pipewire-pulse %{_bindir}/pipewire-pulse
%{_mandir}/man1/pipewire-pulse.1%{ext_man}
%{_userunitdir}/pipewire-pulse.* %{_userunitdir}/pipewire-pulse.*
%ghost %{_localstatedir}/lib/pipewire/pipewire-pulseaudio_post_workaround %ghost %{_localstatedir}/lib/pipewire/pipewire-pulseaudio_post_workaround