Accepting request 987401 from multimedia:libs

OBS-URL: https://build.opensuse.org/request/show/987401
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/pipewire?expand=0&rev=59
This commit is contained in:
Dominique Leuenberger 2022-07-09 14:59:27 +00:00 committed by Git OBS Bridge
commit e289650557
8 changed files with 116 additions and 147 deletions

View File

@ -1,80 +0,0 @@
From 9af94508886b19bb398f4e2a777447ca42907c2f Mon Sep 17 00:00:00 2001
From: Wim Taymans <wtaymans@redhat.com>
Date: Fri, 1 Jul 2022 15:25:37 +0200
Subject: [PATCH] audioconvert: ensure temp buffers are large enough
Ensure that our temporary buffers can hold at least quantum_limit
samples. When no output or input is connected, we can generate up
to a quantum_limit of silence, which requires all the buffers to
be scaled correctly.
Fixes a segfault in mpv.
---
spa/plugins/audioconvert/audioconvert.c | 21 ++++++++++-----------
1 file changed, 10 insertions(+), 11 deletions(-)
diff --git a/spa/plugins/audioconvert/audioconvert.c b/spa/plugins/audioconvert/audioconvert.c
index ae3e4d7c3..21a7ffea1 100644
--- a/spa/plugins/audioconvert/audioconvert.c
+++ b/spa/plugins/audioconvert/audioconvert.c
@@ -221,9 +221,7 @@ struct impl {
uint32_t empty_size;
float *empty;
float *scratch;
- float *tmp;
- float *tmp2;
-
+ float *tmp[2];
float *tmp_datas[2][MAX_PORTS];
};
@@ -1491,9 +1489,9 @@ static int setup_convert(struct impl *th
return res;
for (i = 0; i < MAX_PORTS; i++) {
- this->tmp_datas[0][i] = SPA_PTROFF(this->tmp, this->empty_size * i, void);
+ this->tmp_datas[0][i] = SPA_PTROFF(this->tmp[0], this->empty_size * i, void);
this->tmp_datas[0][i] = SPA_PTR_ALIGN(this->tmp_datas[0][i], MAX_ALIGN, void);
- this->tmp_datas[1][i] = SPA_PTROFF(this->tmp2, this->empty_size * i, void);
+ this->tmp_datas[1][i] = SPA_PTROFF(this->tmp[1], this->empty_size * i, void);
this->tmp_datas[1][i] = SPA_PTR_ALIGN(this->tmp_datas[1][i], MAX_ALIGN, void);
}
@@ -2009,7 +2007,8 @@ impl_node_port_use_buffers(void *object,
clear_buffers(this, port);
- maxsize = 0;
+ maxsize = this->quantum_limit * sizeof(float);
+
for (i = 0; i < n_buffers; i++) {
struct buffer *b;
uint32_t n_datas = buffers[i]->n_datas;
@@ -2050,10 +2049,10 @@ impl_node_port_use_buffers(void *object,
if (maxsize > this->empty_size) {
this->empty = realloc(this->empty, maxsize + MAX_ALIGN);
this->scratch = realloc(this->scratch, maxsize + MAX_ALIGN);
- this->tmp = realloc(this->tmp, (4 * maxsize + MAX_ALIGN) * MAX_PORTS);
- this->tmp2 = realloc(this->tmp2, (4 * maxsize + MAX_ALIGN) * MAX_PORTS);
+ this->tmp[0] = realloc(this->tmp[0], (maxsize + MAX_ALIGN) * MAX_PORTS);
+ this->tmp[1] = realloc(this->tmp[1], (maxsize + MAX_ALIGN) * MAX_PORTS);
if (this->empty == NULL || this->scratch == NULL ||
- this->tmp == NULL || this->tmp2 == NULL)
+ this->tmp[0] == NULL || this->tmp[1] == NULL)
return -errno;
memset(this->empty, 0, maxsize + MAX_ALIGN);
this->empty_size = maxsize;
@@ -2641,8 +2640,8 @@ static int impl_clear(struct spa_handle
free(this->dir[SPA_DIRECTION_OUTPUT].ports[i]);
free(this->empty);
free(this->scratch);
- free(this->tmp);
- free(this->tmp2);
+ free(this->tmp[0]);
+ free(this->tmp[1]);
if (this->resample.free)
resample_free(&this->resample);
--
2.36.1

View File

@ -3,9 +3,10 @@
<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.53</param>
<param name="revision">refs/tags/0.3.54</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>
-->
</service>

View File

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

3
pipewire-0.3.54.obscpio Normal file
View File

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

View File

@ -1,3 +1,54 @@
-------------------------------------------------------------------
Thu Jul 7 08:50:16 UTC 2022 - Alexei Sorokin <sor.alexei@meowr.ru>
- Update to version 0.3.54:
* Highlights
- Some critical bugs in the new audioconvert were fixed. The
old adapter had internal buffering that was abused in some
places.
- The bluetooth sources were rewritten using a ringbuffer to
make them more reliable to jitter and remove old audioconvert
behaviour.
- Many improvements to the audio converter.
- Native DSD128 and up is now supported by pw-dsdplay.
* tools
- Support DSD128 to DSD512 as well by scaling the amount of
samples to read per time slice.
* SPA
- Format conversion is now generated with macros to remove
duplication of code.
- 24bits conversions were rewritten to use the generic
conversion functions.
- Temporary buffers in audioconvert are now made large enough
in all cases.
- Fix draining in audioconvert. This fixes speaker-test.
- Fix the channel remapping.
- Audio conversion constants were tweaked to handle the maximum
ranges and provide lossless conversion between 24bits and
floats.
- Vector code and C code are aligned and the unit tests are
activated again. A new lossless conversion test was added.
- Fix an underrun case where the adapter would not ask for more
data.
- Fix PROP_INFO for audioconvert.
- Use the blackman window again for the resampler, the cosh
window has some bugs that can cause distortion in some cases.
- Add more unit tests for audioconvert. Add end-to-end
conversion tests.
- Don't leak memory in format converter.
* pulse-server
- Card properties are now also added to sinks and sources,
just like in pulseaudio.
- Increase the maxlength size to at least 4 times the fragsize
to avoid xruns.
- Fix a race when setting default devices.
* Bluetooth
- The source was rewritten to use a ringbuffer. This avoids
regressions caused by audioconvert.
- Drop patches already included upstream:
* 0001-audioconvert-ensure-temp-buffers-are-large-enough.patch
- Rebase reduce-meson-dependency.patch.
-------------------------------------------------------------------
Fri Jul 1 14:25:49 UTC 2022 - Alexei Sorokin <sor.alexei@meowr.ru>

View File

@ -1,4 +1,4 @@
name: pipewire
version: 0.3.53
mtime: 1656573301
commit: 3853eba32f1a354b7287f7990ba467679749532a
version: 0.3.54
mtime: 1657181995
commit: 752afa06a279a1975c00f3f9c0175a8c6c615c75

View File

@ -54,7 +54,7 @@
%bcond_with aptx
Name: pipewire
Version: 0.3.53
Version: 0.3.54
Release: 0
Summary: A Multimedia Framework designed to be an audio and video server and more
License: MIT
@ -64,8 +64,6 @@ Source0: %{name}-%{version}.tar.xz
Source99: baselibs.conf
# PATCH-FIX-OPENSUSE reduce-meson-dependency.patch
Patch0: reduce-meson-dependency.patch
# PATCH-FIX-UPSTREAM 0001-audioconvert-ensure-temp-buffers-are-large-enough.patch
Patch1: 0001-audioconvert-ensure-temp-buffers-are-large-enough.patch
BuildRequires: docutils
BuildRequires: doxygen
BuildRequires: fdupes
@ -336,7 +334,6 @@ This package provides a PulseAudio implementation based on PipeWire
%if 0%{?sle_version} == 150300
%patch0 -p1
%endif
%patch1 -p1
%build
%if %{pkg_vcmp gcc < 8}

View File

@ -1,10 +1,10 @@
Index: pipewire-0.3.53/meson.build
Index: pipewire-0.3.54/meson.build
===================================================================
--- pipewire-0.3.53.orig/meson.build
+++ pipewire-0.3.53/meson.build
--- pipewire-0.3.54.orig/meson.build
+++ pipewire-0.3.54/meson.build
@@ -1,7 +1,7 @@
project('pipewire', ['c' ],
version : '0.3.53',
version : '0.3.54',
license : [ 'MIT', 'LGPL-2.1-or-later', 'GPL-2.0-only' ],
- meson_version : '>= 0.59.0',
+ meson_version : '>= 0.54.0',
@ -110,10 +110,10 @@ Index: pipewire-0.3.53/meson.build
+if meson.version().version_compare('>=0.58.0')
+ meson.add_devenv(devenv)
+endif
Index: pipewire-0.3.53/spa/plugins/audioconvert/meson.build
Index: pipewire-0.3.54/spa/plugins/audioconvert/meson.build
===================================================================
--- pipewire-0.3.53.orig/spa/plugins/audioconvert/meson.build
+++ pipewire-0.3.53/spa/plugins/audioconvert/meson.build
--- pipewire-0.3.54.orig/spa/plugins/audioconvert/meson.build
+++ pipewire-0.3.54/spa/plugins/audioconvert/meson.build
@@ -137,7 +137,7 @@ foreach a : test_apps
install : installed_tests_enabled,
install_dir : installed_tests_execdir / 'audioconvert'),
@ -132,10 +132,10 @@ Index: pipewire-0.3.53/spa/plugins/audioconvert/meson.build
])
if installed_tests_enabled
Index: pipewire-0.3.53/spa/tests/meson.build
Index: pipewire-0.3.54/spa/tests/meson.build
===================================================================
--- pipewire-0.3.53.orig/spa/tests/meson.build
+++ pipewire-0.3.53/spa/tests/meson.build
--- pipewire-0.3.54.orig/spa/tests/meson.build
+++ pipewire-0.3.54/spa/tests/meson.build
@@ -5,7 +5,7 @@ find = find_program('find', required: fa
summary({'find (for header testing)': find.found()}, bool_yn: true, section: 'Optional programs')
if find.found()
@ -154,10 +154,10 @@ Index: pipewire-0.3.53/spa/tests/meson.build
]
)
Index: pipewire-0.3.53/src/daemon/meson.build
Index: pipewire-0.3.54/src/daemon/meson.build
===================================================================
--- pipewire-0.3.53.orig/src/daemon/meson.build
+++ pipewire-0.3.53/src/daemon/meson.build
--- pipewire-0.3.54.orig/src/daemon/meson.build
+++ pipewire-0.3.54/src/daemon/meson.build
@@ -18,9 +18,9 @@ conf_config.set('pulse_comment', '#')
conf_config_uninstalled = conf_config
@ -179,20 +179,20 @@ Index: pipewire-0.3.53/src/daemon/meson.build
)
#desktop_file = i18n.merge_file(
Index: pipewire-0.3.53/src/daemon/systemd/user/meson.build
Index: pipewire-0.3.54/src/daemon/systemd/user/meson.build
===================================================================
--- pipewire-0.3.53.orig/src/daemon/systemd/user/meson.build
+++ pipewire-0.3.53/src/daemon/systemd/user/meson.build
--- pipewire-0.3.54.orig/src/daemon/systemd/user/meson.build
+++ pipewire-0.3.54/src/daemon/systemd/user/meson.build
@@ -1,4 +1,4 @@
-systemd_user_services_dir = systemd.get_variable('systemduserunitdir', pkgconfig_define : [ 'prefix', prefix])
+#systemd_user_services_dir = systemd.get_variable('systemduserunitdir', pkgconfig_define : [ 'prefix', prefix])
if get_option('systemd-user-unit-dir') != ''
systemd_user_services_dir = get_option('systemd-user-unit-dir')
endif
Index: pipewire-0.3.53/src/modules/meson.build
Index: pipewire-0.3.54/src/modules/meson.build
===================================================================
--- pipewire-0.3.53.orig/src/modules/meson.build
+++ pipewire-0.3.53/src/modules/meson.build
--- pipewire-0.3.54.orig/src/modules/meson.build
+++ pipewire-0.3.54/src/modules/meson.build
@@ -376,9 +376,9 @@ test('pw-test-protocol-native',
install_dir : installed_tests_execdir,
),
@ -206,10 +206,10 @@ Index: pipewire-0.3.53/src/modules/meson.build
]
)
Index: pipewire-0.3.53/src/tests/meson.build
Index: pipewire-0.3.54/src/tests/meson.build
===================================================================
--- pipewire-0.3.53.orig/src/tests/meson.build
+++ pipewire-0.3.53/src/tests/meson.build
--- pipewire-0.3.54.orig/src/tests/meson.build
+++ pipewire-0.3.54/src/tests/meson.build
@@ -13,9 +13,9 @@ foreach a : test_apps
install : installed_tests_enabled,
install_dir : installed_tests_execdir),
@ -223,10 +223,10 @@ Index: pipewire-0.3.53/src/tests/meson.build
])
if installed_tests_enabled
Index: pipewire-0.3.53/test/meson.build
Index: pipewire-0.3.54/test/meson.build
===================================================================
--- pipewire-0.3.53.orig/test/meson.build
+++ pipewire-0.3.53/test/meson.build
--- pipewire-0.3.54.orig/test/meson.build
+++ pipewire-0.3.54/test/meson.build
@@ -14,8 +14,8 @@ pwtest_deps = [
]
@ -238,10 +238,10 @@ Index: pipewire-0.3.53/test/meson.build
]
pwtest_inc = [
Index: pipewire-0.3.53/doc/meson.build
Index: pipewire-0.3.54/doc/meson.build
===================================================================
--- pipewire-0.3.53.orig/doc/meson.build
+++ pipewire-0.3.53/doc/meson.build
--- pipewire-0.3.54.orig/doc/meson.build
+++ pipewire-0.3.54/doc/meson.build
@@ -1,8 +1,8 @@
doxyfile_conf = configuration_data()
doxyfile_conf.set('PACKAGE_NAME', meson.project_name())
@ -342,10 +342,10 @@ Index: pipewire-0.3.53/doc/meson.build
doxyfile = configure_file(input: 'Doxyfile.in',
output: 'Doxyfile',
Index: pipewire-0.3.53/spa/meson.build
Index: pipewire-0.3.54/spa/meson.build
===================================================================
--- pipewire-0.3.53.orig/spa/meson.build
+++ pipewire-0.3.53/spa/meson.build
--- pipewire-0.3.54.orig/spa/meson.build
+++ pipewire-0.3.54/spa/meson.build
@@ -31,7 +31,7 @@ pkgconfig.generate(filebase : 'lib@0@'.f
subdir('include')
@ -363,10 +363,10 @@ Index: pipewire-0.3.53/spa/meson.build
+if (get_option('examples').enabled() or get_option('examples').auto())
subdir('examples')
endif
Index: pipewire-0.3.53/man/meson.build
Index: pipewire-0.3.54/man/meson.build
===================================================================
--- pipewire-0.3.53.orig/man/meson.build
+++ pipewire-0.3.53/man/meson.build
--- pipewire-0.3.54.orig/man/meson.build
+++ pipewire-0.3.54/man/meson.build
@@ -21,7 +21,7 @@ manpages = [
'pw-top.1.rst.in',
]
@ -376,10 +376,10 @@ Index: pipewire-0.3.53/man/meson.build
manpages += 'pw-jack.1.rst.in'
endif
Index: pipewire-0.3.53/src/meson.build
Index: pipewire-0.3.54/src/meson.build
===================================================================
--- pipewire-0.3.53.orig/src/meson.build
+++ pipewire-0.3.53/src/meson.build
--- pipewire-0.3.54.orig/src/meson.build
+++ pipewire-0.3.54/src/meson.build
@@ -3,10 +3,10 @@ subdir('pipewire')
subdir('daemon')
subdir('tools')
@ -393,10 +393,10 @@ Index: pipewire-0.3.53/src/meson.build
subdir('tests')
endif
Index: pipewire-0.3.53/spa/plugins/bluez5/meson.build
Index: pipewire-0.3.54/spa/plugins/bluez5/meson.build
===================================================================
--- pipewire-0.3.53.orig/spa/plugins/bluez5/meson.build
+++ pipewire-0.3.53/spa/plugins/bluez5/meson.build
--- pipewire-0.3.54.orig/spa/plugins/bluez5/meson.build
+++ pipewire-0.3.54/spa/plugins/bluez5/meson.build
@@ -6,12 +6,12 @@ foreach dep: bluez5_deps
endforeach
@ -447,10 +447,10 @@ Index: pipewire-0.3.53/spa/plugins/bluez5/meson.build
lc3plus_args = codec_args
lc3plus_dep = [ lc3plus_dep ]
bluez_codec_lc3plus = shared_library('spa-codec-bluez5-lc3plus',
Index: pipewire-0.3.53/spa/plugins/meson.build
Index: pipewire-0.3.54/spa/plugins/meson.build
===================================================================
--- pipewire-0.3.53.orig/spa/plugins/meson.build
+++ pipewire-0.3.53/spa/plugins/meson.build
--- pipewire-0.3.54.orig/spa/plugins/meson.build
+++ pipewire-0.3.54/spa/plugins/meson.build
@@ -1,16 +1,16 @@
if alsa_dep.found()
subdir('alsa')
@ -504,10 +504,10 @@ Index: pipewire-0.3.53/spa/plugins/meson.build
-subdir('aec')
\ No newline at end of file
+subdir('aec')
Index: pipewire-0.3.53/spa/plugins/support/meson.build
Index: pipewire-0.3.54/spa/plugins/support/meson.build
===================================================================
--- pipewire-0.3.53.orig/spa/plugins/support/meson.build
+++ pipewire-0.3.53/spa/plugins/support/meson.build
--- pipewire-0.3.54.orig/spa/plugins/support/meson.build
+++ pipewire-0.3.54/spa/plugins/support/meson.build
@@ -23,7 +23,7 @@ spa_support_lib = shared_library('spa-su
install_dir : spa_plugindir / 'support')
spa_support_dep = declare_dependency(link_with: spa_support_lib)
@ -517,10 +517,10 @@ Index: pipewire-0.3.53/spa/plugins/support/meson.build
evl_inc = include_directories('/usr/evl/include')
evl_lib = cc.find_library('evl',
dirs: ['/usr/evl/lib/'],
Index: pipewire-0.3.53/src/daemon/systemd/meson.build
Index: pipewire-0.3.54/src/daemon/systemd/meson.build
===================================================================
--- pipewire-0.3.53.orig/src/daemon/systemd/meson.build
+++ pipewire-0.3.53/src/daemon/systemd/meson.build
--- pipewire-0.3.54.orig/src/daemon/systemd/meson.build
+++ pipewire-0.3.54/src/daemon/systemd/meson.build
@@ -1,6 +1,6 @@
-if get_option('systemd-system-service').allowed()
+if (get_option('systemd-system-service').enabled() or get_option('systemd-system-service').auto())
@ -530,10 +530,10 @@ Index: pipewire-0.3.53/src/daemon/systemd/meson.build
+if (get_option('systemd-user-service').enabled() or get_option('systemd-user-service').auto())
subdir('user')
endif
Index: pipewire-0.3.53/src/gst/meson.build
Index: pipewire-0.3.54/src/gst/meson.build
===================================================================
--- pipewire-0.3.53.orig/src/gst/meson.build
+++ pipewire-0.3.53/src/gst/meson.build
--- pipewire-0.3.54.orig/src/gst/meson.build
+++ pipewire-0.3.54/src/gst/meson.build
@@ -8,7 +8,7 @@ pipewire_gst_sources = [
'gstpipewiresrc.c',
]
@ -543,10 +543,10 @@ Index: pipewire-0.3.53/src/gst/meson.build
pipewire_gst_sources += [ 'gstpipewiredeviceprovider.c' ]
endif
Index: pipewire-0.3.53/src/tools/meson.build
Index: pipewire-0.3.54/src/tools/meson.build
===================================================================
--- pipewire-0.3.53.orig/src/tools/meson.build
+++ pipewire-0.3.53/src/tools/meson.build
--- pipewire-0.3.54.orig/src/tools/meson.build
+++ pipewire-0.3.54/src/tools/meson.build
@@ -32,7 +32,7 @@ if ncurses_dep.found()
endif