From f8495c8ad033ef6ada9894e0ca42c704aec7de5cede0bf7f3ea67ab00eef65fe Mon Sep 17 00:00:00 2001 From: Antonio Larrosa Date: Thu, 7 Jul 2022 09:57:39 +0000 Subject: [PATCH] Accepting request 987400 from home:XRevan86 - Update to version 0.3.54. OBS-URL: https://build.opensuse.org/request/show/987400 OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/pipewire?expand=0&rev=65 --- ...ensure-temp-buffers-are-large-enough.patch | 80 ------------- _service | 5 +- pipewire-0.3.53.obscpio | 3 - pipewire-0.3.54.obscpio | 3 + pipewire.changes | 51 ++++++++ pipewire.obsinfo | 6 +- pipewire.spec | 5 +- reduce-meson-dependency.patch | 110 +++++++++--------- 8 files changed, 116 insertions(+), 147 deletions(-) delete mode 100644 0001-audioconvert-ensure-temp-buffers-are-large-enough.patch delete mode 100644 pipewire-0.3.53.obscpio create mode 100644 pipewire-0.3.54.obscpio diff --git a/0001-audioconvert-ensure-temp-buffers-are-large-enough.patch b/0001-audioconvert-ensure-temp-buffers-are-large-enough.patch deleted file mode 100644 index 4617580..0000000 --- a/0001-audioconvert-ensure-temp-buffers-are-large-enough.patch +++ /dev/null @@ -1,80 +0,0 @@ -From 9af94508886b19bb398f4e2a777447ca42907c2f Mon Sep 17 00:00:00 2001 -From: Wim Taymans -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 - diff --git a/_service b/_service index 543de45..a7609d8 100644 --- a/_service +++ b/_service @@ -3,9 +3,10 @@ git https://gitlab.freedesktop.org/pipewire/pipewire.git - refs/tags/0.3.53 + refs/tags/0.3.54 @PARENT_TAG@ - diff --git a/pipewire-0.3.53.obscpio b/pipewire-0.3.53.obscpio deleted file mode 100644 index 6bb61dc..0000000 --- a/pipewire-0.3.53.obscpio +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:601b54c040b9c0af6598797f97bb50f9c3b5faa37274073d5f09bffe156f2052 -size 10661389 diff --git a/pipewire-0.3.54.obscpio b/pipewire-0.3.54.obscpio new file mode 100644 index 0000000..4e820d9 --- /dev/null +++ b/pipewire-0.3.54.obscpio @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fae7d17d19a0bbf8aa6fdd36c7681d4ae284364a45fc96f2122ff6305dc32c31 +size 10660365 diff --git a/pipewire.changes b/pipewire.changes index 7e8f041..90b08ab 100644 --- a/pipewire.changes +++ b/pipewire.changes @@ -1,3 +1,54 @@ +------------------------------------------------------------------- +Thu Jul 7 08:50:16 UTC 2022 - Alexei Sorokin + +- 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 diff --git a/pipewire.obsinfo b/pipewire.obsinfo index c6244b5..3fa6d9b 100644 --- a/pipewire.obsinfo +++ b/pipewire.obsinfo @@ -1,4 +1,4 @@ name: pipewire -version: 0.3.53 -mtime: 1656573301 -commit: 3853eba32f1a354b7287f7990ba467679749532a +version: 0.3.54 +mtime: 1657181995 +commit: 752afa06a279a1975c00f3f9c0175a8c6c615c75 diff --git a/pipewire.spec b/pipewire.spec index 73c8d5a..c7fef67 100644 --- a/pipewire.spec +++ b/pipewire.spec @@ -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} diff --git a/reduce-meson-dependency.patch b/reduce-meson-dependency.patch index 9bceca5..c6ee9b7 100644 --- a/reduce-meson-dependency.patch +++ b/reduce-meson-dependency.patch @@ -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