Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package pipewire for openSUSE:Factory checked in at 2022-07-18 18:33:03 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/pipewire (Old) and /work/SRC/openSUSE:Factory/.pipewire.new.1523 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "pipewire" Mon Jul 18 18:33:03 2022 rev:60 rq:989319 version:0.3.55 Changes: -------- --- /work/SRC/openSUSE:Factory/pipewire/pipewire.changes 2022-07-09 16:59:41.044494410 +0200 +++ /work/SRC/openSUSE:Factory/.pipewire.new.1523/pipewire.changes 2022-07-18 18:33:09.565691094 +0200 @@ -1,0 +2,62 @@ +Wed Jul 13 09:20:57 UTC 2022 - Fabian Vogt <fv...@suse.com> + +- Add patch to fix audio after tty switching (boo#1201349): + * 0002-spa-alsa-udev-Check-accessibility-of-pcm-devices-as-well.patch + +------------------------------------------------------------------- +Tue Jul 12 16:20:23 UTC 2022 - Alexei Sorokin <sor.ale...@meowr.ru> + +- Update to version 0.3.55: + * Highlights + - Fix some more critical bugs in the new audioconvert and the + queueing in pw-stream that causes stuttering and hickups. + - HFP hardware volumes are now saved and restored. + - Format conversions and mixing was improved. + - Small bug fixes and improvements. + * PipeWire + - The queueing in pw-stream was improved with support for + buffer prefetch in asynchronous mode. + - Add a pw-filter unit test. + * tools + - pw-midiplay should now work again after improvements in + pw-stream. + * modules + - The RAOP module was improved to support auth_setup. + - The RAOP module should now handle timing packets better. + - Add some more filter-chain examples. + - The filter-chain now has a separate config file with the + boilerplate settings. The examples are now just config + snippets that can be dropped in .conf.d/ directories, such as + the filter-chain.conf.d/ one. + - Start suggesting to use target.object instead of node.target + in docs and examples. + * SPA + - Use the cosh window again for the resampler. It should now + give better resampler quality. + - Rework the mixer functions. They were rewritten for higher + precision and better performance. Add unit tests and + benchmarks. + - Improve format conversion for 32bits for avoid errors in + clang because of undefined behaviour at extreme ranges. + - Fix a bug in audioconvert where it would not consume the + right amount of samples when the resampler was disabled. + This could cause skipping and hickups. + - Fix bug in audioconvert where it would try to convert the + input samples multiple times, causing strange artefacts when + upmixing. + - Be more strict about valid JSON floats. + - device.vendor.id and device.product.id should now always show + up in 0xXXXX format and should not be converted to floats in + pw-dump anymore. + - Add triangular dither, add unit tests for noise generation, + add some more optimisations. + * Bluetooth + - HFP and A2DP now expose different routes and thus can have + different volumes. + - HW Volumes for HFP are now synchronised better. + Volume changes from HW buttons are now also saved. +- Rebase reduce-meson-dependency.patch. +- Add 0001-jack-only-mix-when-we-have-input-to-mix.patch: Fix an + Ardour start-up crash. + +------------------------------------------------------------------- Old: ---- pipewire-0.3.54.obscpio New: ---- 0001-jack-only-mix-when-we-have-input-to-mix.patch 0002-spa-alsa-udev-Check-accessibility-of-pcm-devices-as-well.patch pipewire-0.3.55.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ pipewire.spec ++++++ --- /var/tmp/diff_new_pack.9aMkum/_old 2022-07-18 18:33:10.249692067 +0200 +++ /var/tmp/diff_new_pack.9aMkum/_new 2022-07-18 18:33:10.253692073 +0200 @@ -54,7 +54,7 @@ %bcond_with aptx Name: pipewire -Version: 0.3.54 +Version: 0.3.55 Release: 0 Summary: A Multimedia Framework designed to be an audio and video server and more License: MIT @@ -64,6 +64,10 @@ Source99: baselibs.conf # PATCH-FIX-OPENSUSE reduce-meson-dependency.patch Patch0: reduce-meson-dependency.patch +# PATCH-FIX-UPSTREAM 0001-jack-only-mix-when-we-have-input-to-mix.patch +Patch1: 0001-jack-only-mix-when-we-have-input-to-mix.patch +# PATCH-FIX-UPSTREAM 0002-spa-alsa-udev-Check-accessibility-of-pcm-devices-as-well.patch -- https://gitlab.freedesktop.org/pipewire/pipewire/-/merge_requests/1319 +Patch2: 0002-spa-alsa-udev-Check-accessibility-of-pcm-devices-as-well.patch BuildRequires: docutils BuildRequires: doxygen BuildRequires: fdupes @@ -334,6 +338,7 @@ %if 0%{?sle_version} == 150300 %patch0 -p1 %endif +%patch1 -p1 %build %if %{pkg_vcmp gcc < 8} @@ -522,6 +527,7 @@ %{_mandir}/man5/pipewire.conf.5%{?ext_man} %dir %{_datadir}/pipewire/ %{_datadir}/pipewire/pipewire.conf +%{_datadir}/pipewire/filter-chain.conf %dir %{_datadir}/pipewire/filter-chain/ %{_datadir}/pipewire/filter-chain/*.conf %ghost %dir %{_localstatedir}/lib/pipewire/ ++++++ 0001-jack-only-mix-when-we-have-input-to-mix.patch ++++++ >From 40552a0e914c3aef48ce59ce1bfb9d80516aa893 Mon Sep 17 00:00:00 2001 From: Wim Taymans <wtaym...@redhat.com> Date: Tue, 12 Jul 2022 15:10:02 +0200 Subject: [PATCH] jack: only mix when we have input to mix Avoids a crash when starting ardour6. --- pipewire-jack/src/pipewire-jack.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipewire-jack/src/pipewire-jack.c b/pipewire-jack/src/pipewire-jack.c index 2a9ebc40d..04c63984d 100644 --- a/pipewire-jack/src/pipewire-jack.c +++ b/pipewire-jack/src/pipewire-jack.c @@ -4449,7 +4449,7 @@ static void *get_buffer_input_float(struct port *p, jack_nframes_t frames) } if (n_ptr == 1) { ptr = mix_ptr[0]; - } else { + } else if (n_ptr > 1) { ptr = p->emptyptr; mix_function(ptr, mix_ptr, n_ptr, ptr_aligned, frames); p->zeroed = false; -- 2.37.0 ++++++ 0002-spa-alsa-udev-Check-accessibility-of-pcm-devices-as-well.patch ++++++ >From 0eb7f097129e35fba4aeeba518a2bc79d96fed44 Mon Sep 17 00:00:00 2001 From: Fabian Vogt <fv...@suse.de> Date: Wed, 13 Jul 2022 10:47:22 +0200 Subject: [PATCH] spa/alsa-udev: Check accessibility of pcm devices as well The order of attribute changes is random, so it's possible that controlCX is accessible before the other devices, which marks the device as available but it actually fails to open. Only consider the device accessible if both control and PCM devices can be accessed. This requires reacting to ATTRIB changes of pcm devices as well now. Fixes #2534 --- spa/plugins/alsa/alsa-udev.c | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/spa/plugins/alsa/alsa-udev.c b/spa/plugins/alsa/alsa-udev.c index aa7b03994..8ee217d9d 100644 --- a/spa/plugins/alsa/alsa-udev.c +++ b/spa/plugins/alsa/alsa-udev.c @@ -538,11 +538,35 @@ static int emit_object_info(struct impl *this, struct device *device) static bool check_access(struct impl *this, struct device *device) { - char path[128]; - bool accessible; + char path[128], prefix[32]; + DIR *snd = NULL; + struct dirent *entry; + bool accessible = false; snprintf(path, sizeof(path), "/dev/snd/controlC%u", device->id); - accessible = access(path, R_OK|W_OK) >= 0; + if (access(path, R_OK|W_OK) >= 0 && (snd = opendir("/dev/snd"))) { + /* + * It's possible that controlCX is accessible before pcmCX* or + * the other way around. Return true only if all devices are + * accessible. + */ + + accessible = true; + spa_scnprintf(prefix, sizeof(prefix), "pcmC%uD", device->id); + while ((entry = readdir(snd)) != NULL) { + if (!(entry->d_type == DT_CHR && + spa_strstartswith(entry->d_name, prefix))) + continue; + + snprintf(path, sizeof(path), "/dev/snd/%.32s", entry->d_name); + if (access(path, R_OK|W_OK) < 0) { + accessible = false; + break; + } + } + closedir(snd); + } + if (accessible != device->accessible) spa_log_debug(this->log, "%s accessible:%u", path, accessible); device->accessible = accessible; @@ -655,10 +679,6 @@ static void impl_on_notify_events(struct spa_source *source) /* Device becomes accessible or not busy */ if ((event->mask & (IN_ATTRIB | IN_CLOSE_WRITE))) { bool access; - - if ((event->mask & IN_ATTRIB) && - spa_strstartswith(event->name, "pcm")) - continue; if (sscanf(event->name, "controlC%u", &id) != 1 && sscanf(event->name, "pcmC%uD", &id) != 1) continue; -- 2.37.0 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.9aMkum/_old 2022-07-18 18:33:10.285692119 +0200 +++ /var/tmp/diff_new_pack.9aMkum/_new 2022-07-18 18:33:10.289692124 +0200 @@ -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.54</param> + <param name="revision">refs/tags/0.3.55</param> <param name="versionformat">@PARENT_TAG@</param> <!-- <param name="revision">master</param> ++++++ pipewire-0.3.54.obscpio -> pipewire-0.3.55.obscpio ++++++ /work/SRC/openSUSE:Factory/pipewire/pipewire-0.3.54.obscpio /work/SRC/openSUSE:Factory/.pipewire.new.1523/pipewire-0.3.55.obscpio differ: char 50, line 1 ++++++ pipewire.obsinfo ++++++ --- /var/tmp/diff_new_pack.9aMkum/_old 2022-07-18 18:33:10.325692175 +0200 +++ /var/tmp/diff_new_pack.9aMkum/_new 2022-07-18 18:33:10.325692175 +0200 @@ -1,5 +1,5 @@ name: pipewire -version: 0.3.54 -mtime: 1657181995 -commit: 752afa06a279a1975c00f3f9c0175a8c6c615c75 +version: 0.3.55 +mtime: 1657616099 +commit: 957e3a7b3832dbf61e5530f448bf7e4275fa8476 ++++++ reduce-meson-dependency.patch ++++++ --- /var/tmp/diff_new_pack.9aMkum/_old 2022-07-18 18:33:10.333692187 +0200 +++ /var/tmp/diff_new_pack.9aMkum/_new 2022-07-18 18:33:10.337692193 +0200 @@ -1,10 +1,10 @@ -Index: pipewire-0.3.54/meson.build +Index: pipewire-0.3.55/meson.build =================================================================== ---- pipewire-0.3.54.orig/meson.build -+++ pipewire-0.3.54/meson.build +--- pipewire-0.3.55.orig/meson.build ++++ pipewire-0.3.55/meson.build @@ -1,7 +1,7 @@ project('pipewire', ['c' ], - version : '0.3.54', + version : '0.3.55', 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 @@ +if meson.version().version_compare('>=0.58.0') + meson.add_devenv(devenv) +endif -Index: pipewire-0.3.54/spa/plugins/audioconvert/meson.build +Index: pipewire-0.3.55/spa/plugins/audioconvert/meson.build =================================================================== ---- pipewire-0.3.54.orig/spa/plugins/audioconvert/meson.build -+++ pipewire-0.3.54/spa/plugins/audioconvert/meson.build +--- pipewire-0.3.55.orig/spa/plugins/audioconvert/meson.build ++++ pipewire-0.3.55/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,31 @@ ]) if installed_tests_enabled -Index: pipewire-0.3.54/spa/tests/meson.build +Index: pipewire-0.3.55/spa/plugins/audiomixer/meson.build +--- pipewire-0.3.55.orig/spa/plugins/audiomixer/meson.build ++++ pipewire-0.3.55/spa/plugins/audiomixer/meson.build +@@ -81,7 +81,7 @@ foreach a : test_apps + install : installed_tests_enabled, + install_dir : installed_tests_execdir / 'audiomixer'), + env : [ +- 'SPA_PLUGIN_DIR=@0@'.format(spa_dep.get_variable('plugindir')), ++ 'SPA_PLUGIN_DIR=@0@'.format(spa_dep.get_variable(internal: 'plugindir')), + ]) + + if installed_tests_enabled +@@ -110,7 +110,7 @@ foreach a : benchmark_apps + install : installed_tests_enabled, + install_dir : installed_tests_execdir / 'audiomixer'), + env : [ +- 'SPA_PLUGIN_DIR=@0@'.format(spa_dep.get_variable('plugindir')), ++ 'SPA_PLUGIN_DIR=@0@'.format(spa_dep.get_variable(internal: 'plugindir')), + ]) + + if installed_tests_enabled +Index: pipewire-0.3.55/spa/tests/meson.build =================================================================== ---- pipewire-0.3.54.orig/spa/tests/meson.build -+++ pipewire-0.3.54/spa/tests/meson.build +--- pipewire-0.3.55.orig/spa/tests/meson.build ++++ pipewire-0.3.55/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 +175,10 @@ ] ) -Index: pipewire-0.3.54/src/daemon/meson.build +Index: pipewire-0.3.55/src/daemon/meson.build =================================================================== ---- pipewire-0.3.54.orig/src/daemon/meson.build -+++ pipewire-0.3.54/src/daemon/meson.build +--- pipewire-0.3.55.orig/src/daemon/meson.build ++++ pipewire-0.3.55/src/daemon/meson.build @@ -18,9 +18,9 @@ conf_config.set('pulse_comment', '#') conf_config_uninstalled = conf_config @@ -170,7 +191,7 @@ conf_config_uninstalled.set('pulse_comment', '') build_ms = 'media-session' in get_option('session-managers') -@@ -106,7 +106,7 @@ custom_target('pipewire-uninstalled', +@@ -107,7 +107,7 @@ custom_target('pipewire-uninstalled', install: false, input: pipewire_exec, output: 'pipewire-uninstalled', @@ -179,20 +200,20 @@ ) #desktop_file = i18n.merge_file( -Index: pipewire-0.3.54/src/daemon/systemd/user/meson.build +Index: pipewire-0.3.55/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 +--- pipewire-0.3.55.orig/src/daemon/systemd/user/meson.build ++++ pipewire-0.3.55/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.54/src/modules/meson.build +Index: pipewire-0.3.55/src/modules/meson.build =================================================================== ---- pipewire-0.3.54.orig/src/modules/meson.build -+++ pipewire-0.3.54/src/modules/meson.build +--- pipewire-0.3.55.orig/src/modules/meson.build ++++ pipewire-0.3.55/src/modules/meson.build @@ -376,9 +376,9 @@ test('pw-test-protocol-native', install_dir : installed_tests_execdir, ), @@ -206,11 +227,11 @@ ] ) -Index: pipewire-0.3.54/src/tests/meson.build +Index: pipewire-0.3.55/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 +--- pipewire-0.3.55.orig/src/tests/meson.build ++++ pipewire-0.3.55/src/tests/meson.build +@@ -14,9 +14,9 @@ foreach a : test_apps install : installed_tests_enabled, install_dir : installed_tests_execdir), env : [ @@ -223,10 +244,10 @@ ]) if installed_tests_enabled -Index: pipewire-0.3.54/test/meson.build +Index: pipewire-0.3.55/test/meson.build =================================================================== ---- pipewire-0.3.54.orig/test/meson.build -+++ pipewire-0.3.54/test/meson.build +--- pipewire-0.3.55.orig/test/meson.build ++++ pipewire-0.3.55/test/meson.build @@ -14,8 +14,8 @@ pwtest_deps = [ ] @@ -238,10 +259,10 @@ ] pwtest_inc = [ -Index: pipewire-0.3.54/doc/meson.build +Index: pipewire-0.3.55/doc/meson.build =================================================================== ---- pipewire-0.3.54.orig/doc/meson.build -+++ pipewire-0.3.54/doc/meson.build +--- pipewire-0.3.55.orig/doc/meson.build ++++ pipewire-0.3.55/doc/meson.build @@ -1,8 +1,8 @@ doxyfile_conf = configuration_data() doxyfile_conf.set('PACKAGE_NAME', meson.project_name()) @@ -342,10 +363,10 @@ doxyfile = configure_file(input: 'Doxyfile.in', output: 'Doxyfile', -Index: pipewire-0.3.54/spa/meson.build +Index: pipewire-0.3.55/spa/meson.build =================================================================== ---- pipewire-0.3.54.orig/spa/meson.build -+++ pipewire-0.3.54/spa/meson.build +--- pipewire-0.3.55.orig/spa/meson.build ++++ pipewire-0.3.55/spa/meson.build @@ -31,7 +31,7 @@ pkgconfig.generate(filebase : 'lib@0@'.f subdir('include') @@ -363,10 +384,10 @@ +if (get_option('examples').enabled() or get_option('examples').auto()) subdir('examples') endif -Index: pipewire-0.3.54/man/meson.build +Index: pipewire-0.3.55/man/meson.build =================================================================== ---- pipewire-0.3.54.orig/man/meson.build -+++ pipewire-0.3.54/man/meson.build +--- pipewire-0.3.55.orig/man/meson.build ++++ pipewire-0.3.55/man/meson.build @@ -21,7 +21,7 @@ manpages = [ 'pw-top.1.rst.in', ] @@ -376,10 +397,10 @@ manpages += 'pw-jack.1.rst.in' endif -Index: pipewire-0.3.54/src/meson.build +Index: pipewire-0.3.55/src/meson.build =================================================================== ---- pipewire-0.3.54.orig/src/meson.build -+++ pipewire-0.3.54/src/meson.build +--- pipewire-0.3.55.orig/src/meson.build ++++ pipewire-0.3.55/src/meson.build @@ -3,10 +3,10 @@ subdir('pipewire') subdir('daemon') subdir('tools') @@ -393,10 +414,10 @@ subdir('tests') endif -Index: pipewire-0.3.54/spa/plugins/bluez5/meson.build +Index: pipewire-0.3.55/spa/plugins/bluez5/meson.build =================================================================== ---- pipewire-0.3.54.orig/spa/plugins/bluez5/meson.build -+++ pipewire-0.3.54/spa/plugins/bluez5/meson.build +--- pipewire-0.3.55.orig/spa/plugins/bluez5/meson.build ++++ pipewire-0.3.55/spa/plugins/bluez5/meson.build @@ -6,12 +6,12 @@ foreach dep: bluez5_deps endforeach @@ -447,10 +468,10 @@ lc3plus_args = codec_args lc3plus_dep = [ lc3plus_dep ] bluez_codec_lc3plus = shared_library('spa-codec-bluez5-lc3plus', -Index: pipewire-0.3.54/spa/plugins/meson.build +Index: pipewire-0.3.55/spa/plugins/meson.build =================================================================== ---- pipewire-0.3.54.orig/spa/plugins/meson.build -+++ pipewire-0.3.54/spa/plugins/meson.build +--- pipewire-0.3.55.orig/spa/plugins/meson.build ++++ pipewire-0.3.55/spa/plugins/meson.build @@ -1,16 +1,16 @@ if alsa_dep.found() subdir('alsa') @@ -504,10 +525,10 @@ -subdir('aec') \ No newline at end of file +subdir('aec') -Index: pipewire-0.3.54/spa/plugins/support/meson.build +Index: pipewire-0.3.55/spa/plugins/support/meson.build =================================================================== ---- pipewire-0.3.54.orig/spa/plugins/support/meson.build -+++ pipewire-0.3.54/spa/plugins/support/meson.build +--- pipewire-0.3.55.orig/spa/plugins/support/meson.build ++++ pipewire-0.3.55/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 +538,10 @@ evl_inc = include_directories('/usr/evl/include') evl_lib = cc.find_library('evl', dirs: ['/usr/evl/lib/'], -Index: pipewire-0.3.54/src/daemon/systemd/meson.build +Index: pipewire-0.3.55/src/daemon/systemd/meson.build =================================================================== ---- pipewire-0.3.54.orig/src/daemon/systemd/meson.build -+++ pipewire-0.3.54/src/daemon/systemd/meson.build +--- pipewire-0.3.55.orig/src/daemon/systemd/meson.build ++++ pipewire-0.3.55/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 +551,10 @@ +if (get_option('systemd-user-service').enabled() or get_option('systemd-user-service').auto()) subdir('user') endif -Index: pipewire-0.3.54/src/gst/meson.build +Index: pipewire-0.3.55/src/gst/meson.build =================================================================== ---- pipewire-0.3.54.orig/src/gst/meson.build -+++ pipewire-0.3.54/src/gst/meson.build +--- pipewire-0.3.55.orig/src/gst/meson.build ++++ pipewire-0.3.55/src/gst/meson.build @@ -8,7 +8,7 @@ pipewire_gst_sources = [ 'gstpipewiresrc.c', ] @@ -543,10 +564,10 @@ pipewire_gst_sources += [ 'gstpipewiredeviceprovider.c' ] endif -Index: pipewire-0.3.54/src/tools/meson.build +Index: pipewire-0.3.55/src/tools/meson.build =================================================================== ---- pipewire-0.3.54.orig/src/tools/meson.build -+++ pipewire-0.3.54/src/tools/meson.build +--- pipewire-0.3.55.orig/src/tools/meson.build ++++ pipewire-0.3.55/src/tools/meson.build @@ -32,7 +32,7 @@ if ncurses_dep.found() endif