diff options
Diffstat (limited to 'media-video/pipewire/files')
6 files changed, 22 insertions, 305 deletions
diff --git a/media-video/pipewire/files/pipewire-0.3.60-profile-switch-crash.patch b/media-video/pipewire/files/pipewire-0.3.60-profile-switch-crash.patch deleted file mode 100644 index cd126d627d20..000000000000 --- a/media-video/pipewire/files/pipewire-0.3.60-profile-switch-crash.patch +++ /dev/null @@ -1,28 +0,0 @@ -https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/bf3516ba0496b644b3944b114253f23964178897 - -From bf3516ba0496b644b3944b114253f23964178897 Mon Sep 17 00:00:00 2001 -From: Wim Taymans <wtaymans@redhat.com> -Date: Tue, 15 Nov 2022 15:40:47 +0100 -Subject: [PATCH] audioadapter: perform setup again after a PortConfig - -After the ports are reconfigured, we need to perform the setup again so -that buffers and processing can happen with the right settings. - -This fixes an issue when autoswitching between A2DP and HFP with -bluetooth headsets when there is also a stereo capture device available. -The input stream of the browser is quickly reconfigured between stereo -and mono with only a Pause command in between, clearing the setup state -is enough to redo the setup when going back to Playing. - -Fixes #2764 ---- a/spa/plugins/audioconvert/audioconvert.c -+++ b/spa/plugins/audioconvert/audioconvert.c -@@ -979,6 +979,7 @@ static int reconfigure_mode(struct impl *this, enum spa_param_port_config_mode m - } - - this->monitor = monitor; -+ this->setup = false; - dir->control = control; - dir->have_profile = true; - dir->mode = mode; -GitLab diff --git a/media-video/pipewire/files/pipewire-0.3.60-pulse-server-also-advance-read-pointer-in-underrun.patch b/media-video/pipewire/files/pipewire-0.3.60-pulse-server-also-advance-read-pointer-in-underrun.patch deleted file mode 100644 index 99e752391885..000000000000 --- a/media-video/pipewire/files/pipewire-0.3.60-pulse-server-also-advance-read-pointer-in-underrun.patch +++ /dev/null @@ -1,29 +0,0 @@ -https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/b720da771efa950cf380101bed42d5d5ee177908 - -From b720da771efa950cf380101bed42d5d5ee177908 Mon Sep 17 00:00:00 2001 -From: Wim Taymans <wtaymans@redhat.com> -Date: Thu, 10 Nov 2022 16:13:33 +0100 -Subject: [PATCH] pulse-server: also advance read pointer in underrun - -So that we ask for more data from the client. - -Also retested with #2799 that caused this regression. - -Fixes #2821 ---- a/src/modules/module-protocol-pulse/pulse-server.c -+++ b/src/modules/module-protocol-pulse/pulse-server.c -@@ -1433,10 +1433,11 @@ static void stream_process(void *data) - stream->buffer, MAXLENGTH, - index % MAXLENGTH, - p, avail); -- index += avail; -- pd.read_inc = avail; -- spa_ringbuffer_read_update(&stream->ring, index); - } -+ index += size; -+ pd.read_inc = size; -+ spa_ringbuffer_read_update(&stream->ring, index); -+ - pd.playing_for = size; - } - pw_log_debug("%p: [%s] underrun read:%u avail:%d max:%u", diff --git a/media-video/pipewire/files/pipewire-0.3.60-qemu.patch b/media-video/pipewire/files/pipewire-0.3.60-qemu.patch deleted file mode 100644 index 87d34ec609cf..000000000000 --- a/media-video/pipewire/files/pipewire-0.3.60-qemu.patch +++ /dev/null @@ -1,22 +0,0 @@ -From b46d8a8c921a8da6883610ad4b68da95bf59b59e Mon Sep 17 00:00:00 2001 -From: Wim Taymans <wtaymans@redhat.com> -Date: Wed, 16 Nov 2022 20:45:38 +0100 -Subject: [PATCH] alsa: force playback start when buffer is full - -When we try to play data but the ringbuffer is full, we need to start -the device or else we will stay in this situation forever and stay -silent. - -Fixes #2830 ---- a/spa/plugins/alsa/alsa-pcm.c -+++ b/spa/plugins/alsa/alsa-pcm.c -@@ -2128,7 +2128,7 @@ again: - - state->sample_count += total_written; - -- if (SPA_UNLIKELY(!state->alsa_started && total_written > 0)) -+ if (SPA_UNLIKELY(!state->alsa_started && (total_written > 0 || frames == 0))) - do_start(state); - - return 0; -GitLab diff --git a/media-video/pipewire/files/pipewire-0.3.62-distorted-avx2.patch b/media-video/pipewire/files/pipewire-0.3.62-distorted-avx2.patch deleted file mode 100644 index 5b2f0817d048..000000000000 --- a/media-video/pipewire/files/pipewire-0.3.62-distorted-avx2.patch +++ /dev/null @@ -1,41 +0,0 @@ -https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/b927063b89b791c5fc5485ce4d9eac2cd17a4ad6 - -From b927063b89b791c5fc5485ce4d9eac2cd17a4ad6 Mon Sep 17 00:00:00 2001 -From: Sefa Eyeoglu <contact@scrumplex.net> -Date: Sun, 11 Dec 2022 20:14:09 +0100 -Subject: [PATCH] audioconvert: fix distorted audio on AVX2 - -Closes pipewire/pipewire#2885 - -Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net> ---- a/spa/plugins/audioconvert/fmt-ops-avx2.c -+++ b/spa/plugins/audioconvert/fmt-ops-avx2.c -@@ -339,7 +339,7 @@ conv_s32_to_f32d_4s_avx2(void *data, void * SPA_RESTRICT dst[], const void * SPA - __m256i in[4]; - __m256 out[4], factor = _mm256_set1_ps(1.0f / S24_SCALE); - __m256i mask1 = _mm256_setr_epi32(0*n_channels, 1*n_channels, 2*n_channels, 3*n_channels, -- 3*n_channels, 5*n_channels, 6*n_channels, 7*n_channels); -+ 4*n_channels, 5*n_channels, 6*n_channels, 7*n_channels); - - if (SPA_IS_ALIGNED(d0, 32) && - SPA_IS_ALIGNED(d1, 32) && -@@ -405,7 +405,7 @@ conv_s32_to_f32d_2s_avx2(void *data, void * SPA_RESTRICT dst[], const void * SPA - __m256i in[4]; - __m256 out[4], factor = _mm256_set1_ps(1.0f / S24_SCALE); - __m256i mask1 = _mm256_setr_epi32(0*n_channels, 1*n_channels, 2*n_channels, 3*n_channels, -- 3*n_channels, 5*n_channels, 6*n_channels, 7*n_channels); -+ 4*n_channels, 5*n_channels, 6*n_channels, 7*n_channels); - - if (SPA_IS_ALIGNED(d0, 32) && - SPA_IS_ALIGNED(d1, 32)) -@@ -453,7 +453,7 @@ conv_s32_to_f32d_1s_avx2(void *data, void * SPA_RESTRICT dst[], const void * SPA - __m256i in[2]; - __m256 out[2], factor = _mm256_set1_ps(1.0f / S24_SCALE); - __m256i mask1 = _mm256_setr_epi32(0*n_channels, 1*n_channels, 2*n_channels, 3*n_channels, -- 3*n_channels, 5*n_channels, 6*n_channels, 7*n_channels); -+ 4*n_channels, 5*n_channels, 6*n_channels, 7*n_channels); - - if (SPA_IS_ALIGNED(d0, 32)) - unrolled = n_samples & ~15; --- -GitLab diff --git a/media-video/pipewire/files/pipewire-0.3.62-use-after-free.patch b/media-video/pipewire/files/pipewire-0.3.62-use-after-free.patch deleted file mode 100644 index 66d21caf3195..000000000000 --- a/media-video/pipewire/files/pipewire-0.3.62-use-after-free.patch +++ /dev/null @@ -1,185 +0,0 @@ -https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/3bdd2e01c56ec13179340ecdce0b766f72e4339e -https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/8c892443eb5989ea3e660dedc6a506a9bfb42eac - -From 3bdd2e01c56ec13179340ecdce0b766f72e4339e Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Barnab=C3=A1s=20P=C5=91cze?= <pobrn@protonmail.com> -Date: Sat, 10 Dec 2022 00:40:21 +0100 -Subject: [PATCH] pipewire: store SPA handles in a global list by age - -Operating on the assumption that every SPA handle -can reference any other older SPA handle, the only -safe destruction order is from youngest to oldest. - -To achieve this, store all handles across all plugins -sorted by age (youngest first), and use that as the -order of destruction in `pw_deinit()`. - -This line of thinking does not account for what happens -when a handle that is referenced by others is unloaded, -but it does not make that case worse either. - -See #2881 ---- a/src/pipewire/pipewire.c -+++ b/src/pipewire/pipewire.c -@@ -64,7 +64,6 @@ struct plugin { - char *filename; - void *hnd; - spa_handle_factory_enum_func_t enum_func; -- struct spa_list handles; - int ref; - }; - -@@ -78,6 +77,7 @@ struct handle { - - struct registry { - struct spa_list plugins; -+ struct spa_list handles; /* all handles across all plugins by age (youngest first) */ - }; - - struct support { -@@ -149,7 +149,6 @@ open_plugin(struct registry *registry, - plugin->filename = strdup(filename); - plugin->hnd = hnd; - plugin->enum_func = enum_func; -- spa_list_init(&plugin->handles); - - spa_list_append(®istry->plugins, &plugin->link); - -@@ -290,7 +289,7 @@ static struct spa_handle *load_spa_handle(const char *lib, - handle->ref = 1; - handle->plugin = plugin; - handle->factory_name = strdup(factory_name); -- spa_list_append(&plugin->handles, &handle->link); -+ spa_list_prepend(&sup->registry.handles, &handle->link); - - return &handle->handle; - -@@ -321,15 +320,13 @@ struct spa_handle *pw_load_spa_handle(const char *lib, - static struct handle *find_handle(struct spa_handle *handle) - { - struct registry *registry = &global_support.registry; -- struct plugin *p; - struct handle *h; - -- spa_list_for_each(p, ®istry->plugins, link) { -- spa_list_for_each(h, &p->handles, link) { -- if (&h->handle == handle) -- return h; -- } -+ spa_list_for_each(h, ®istry->handles, link) { -+ if (&h->handle == handle) -+ return h; - } -+ - return NULL; - } - -@@ -611,6 +608,7 @@ void pw_init(int *argc, char **argv[]) - support->support_lib = str; - - spa_list_init(&support->registry.plugins); -+ spa_list_init(&support->registry.handles); - - if (pw_log_is_default()) { - char *patterns = NULL; -@@ -684,7 +682,7 @@ void pw_deinit(void) - { - struct support *support = &global_support; - struct registry *registry = &support->registry; -- struct plugin *p; -+ struct handle *h; - - pthread_mutex_lock(&init_lock); - if (support->init_count == 0) -@@ -694,13 +692,10 @@ void pw_deinit(void) - - pthread_mutex_lock(&support_lock); - pw_log_set(NULL); -- spa_list_consume(p, ®istry->plugins, link) { -- struct handle *h; -- p->ref++; -- spa_list_consume(h, &p->handles, link) -- unref_handle(h); -- unref_plugin(p); -- } -+ -+ spa_list_consume(h, ®istry->handles, link) -+ unref_handle(h); -+ - pw_free_strv(support->categories); - free(support->i18n_domain); - spa_zero(global_support); --- -GitLab - -From 8c892443eb5989ea3e660dedc6a506a9bfb42eac Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Barnab=C3=A1s=20P=C5=91cze?= <pobrn@protonmail.com> -Date: Sat, 10 Dec 2022 02:43:13 +0100 -Subject: [PATCH] spa: audioadapter: fix stack-use-after-scope when configuring - format - -It is not enough for `buffer` to be alive in its current -scope because when execution enters that branch, `format` -will be set to `fmt`, which points inside `buffer`. And -since `format` is used outside that scope, `buffer` must -live longer. - -This was detected by ASAN when Audacity was starting up. - - ==25007==ERROR: AddressSanitizer: stack-use-after-scope on address 0x7ffdbcfef560 at pc 0x7fe44ca95db3 bp 0x7ffdbcfeeda0 sp 0x7ffdbcfeed90 - READ of size 4 at 0x7ffdbcfef560 thread T0 - #0 0x7fe44ca95db2 in spa_pod_parser_pod ../spa/include/spa/pod/parser.h:67 - #1 0x7fe44ca9a805 in spa_format_parse ../spa/include/spa/param/format-utils.h:44 - #2 0x7fe44cad293a in port_set_format ../spa/plugins/audioconvert/audioconvert.c:1934 - #3 0x7fe44cadad14 in impl_node_port_set_param ../spa/plugins/audioconvert/audioconvert.c:2038 - #4 0x7fe44ca587e2 in configure_format ../spa/plugins/audioconvert/audioadapter.c:509 - #5 0x7fe44ca60dff in negotiate_format ../spa/plugins/audioconvert/audioadapter.c:822 - #6 0x7fe44ca62bbf in impl_node_send_command ../spa/plugins/audioconvert/audioadapter.c:846 - #7 0x7fe45ea1c2f1 in node_update_state ../src/pipewire/impl-node.c:407 - #8 0x7fe45ea5137e in pw_impl_node_set_state ../src/pipewire/impl-node.c:2251 - #9 0x7fe45eb3355f in pw_work_queue_destroy ../src/pipewire/work-queue.c:142 - #10 0x7fe45b2cd6f4 in source_event_func ../spa/plugins/support/loop.c:615 - #11 0x7fe45b2c634f in loop_iterate ../spa/plugins/support/loop.c:452 - #12 0x7fe45e9ebebc in spa_hook_list_clean ../spa/include/spa/utils/hook.h:395 - #13 0x5561e03dc722 in main ../src/daemon/pipewire.c:131 - #14 0x7fe45da3c28f (/usr/lib/libc.so.6+0x2328f) - #15 0x7fe45da3c349 in __libc_start_main (/usr/lib/libc.so.6+0x23349) - #16 0x5561e03db2a4 in _start ../sysdeps/x86_64/start.S:115 - - Address 0x7ffdbcfef560 is located in stack of thread T0 at offset 160 in frame - #0 0x7fe44ca56fa9 in configure_format ../spa/plugins/audioconvert/audioadapter.c:475 - - This frame has 4 object(s): - [32, 36) 'state' (line 493) - [48, 56) 'fmt' (line 494) - [80, 128) 'b' (line 492) - [160, 4256) 'buffer' (line 491) <== Memory access at offset 160 is inside this variable ---- a/spa/plugins/audioconvert/audioadapter.c -+++ b/spa/plugins/audioconvert/audioadapter.c -@@ -473,6 +473,7 @@ static int negotiate_buffers(struct impl *this) - - static int configure_format(struct impl *this, uint32_t flags, const struct spa_pod *format) - { -+ uint8_t buffer[4096]; - int res; - - if (format == NULL && !this->have_format) -@@ -487,14 +488,13 @@ static int configure_format(struct impl *this, uint32_t flags, const struct spa_ - SPA_PARAM_Format, flags, - format)) < 0) - return res; -+ - if (res > 0) { -- uint8_t buffer[4096]; -- struct spa_pod_builder b = { 0 }; -+ struct spa_pod_builder b = SPA_POD_BUILDER_INIT(buffer, sizeof(buffer)); - uint32_t state = 0; - struct spa_pod *fmt; - - /* format was changed to nearest compatible format */ -- spa_pod_builder_init(&b, buffer, sizeof(buffer)); - - if ((res = spa_node_port_enum_params_sync(this->follower, - this->direction, 0, --- -GitLab diff --git a/media-video/pipewire/files/pipewire-0.3.63-bluez-ldac_abr.patch b/media-video/pipewire/files/pipewire-0.3.63-bluez-ldac_abr.patch new file mode 100644 index 000000000000..a6e237ddd7c7 --- /dev/null +++ b/media-video/pipewire/files/pipewire-0.3.63-bluez-ldac_abr.patch @@ -0,0 +1,22 @@ +https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/7758240c79a3ed15459da5d150a0b1c3612e3f79 + +From 7758240c79a3ed15459da5d150a0b1c3612e3f79 Mon Sep 17 00:00:00 2001 +From: Wim Taymans <wtaymans@redhat.com> +Date: Thu, 15 Dec 2022 12:20:40 +0100 +Subject: [PATCH] bluez: fix compilation without ldac_abr + +The define for this constant was removed but it was LDACBT_EQMID_MQ +before. +--- a/spa/plugins/bluez5/a2dp-codec-ldac.c ++++ b/spa/plugins/bluez5/a2dp-codec-ldac.c +@@ -243,7 +243,7 @@ static int codec_reduce_bitpool(void *data) + #else + struct impl *this = data; + int res; +- if (this->eqmid == LDACBT_EQMID_BITRATE_330000 || !this->enable_abr) ++ if (this->eqmid == LDACBT_EQMID_MQ || !this->enable_abr) + return this->eqmid; + res = ldacBT_alter_eqmid_priority(this->ldac, LDACBT_EQMID_INC_CONNECTION); + return res; +-- +GitLab |