From c1805357b9d0574b538f1f3cf066c5f9768b883c0cbafe79aa62e2797cbde0ac Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Mon, 14 Nov 2022 13:25:41 +0000 Subject: [PATCH] Accepting request 1035125 from home:XRevan86 - Update to version 0.3.60. OBS-URL: https://build.opensuse.org/request/show/1035125 OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/pipewire?expand=0&rev=83 --- ...ter-chain-iterate-the-port-correctly.patch | 40 ----- ...lso-advance-read-pointer-in-underrun.patch | 36 ++++ ...speakers-output-only-case-in-report_.patch | 73 -------- _service | 2 +- pipewire-0.3.59.obscpio | 3 - pipewire-0.3.60.obscpio | 3 + pipewire.changes | 154 ++++++++++++++++ pipewire.obsinfo | 6 +- pipewire.spec | 34 ++-- reduce-meson-dependency.patch | 168 ++++++++++-------- 10 files changed, 305 insertions(+), 214 deletions(-) delete mode 100644 0001-filter-chain-iterate-the-port-correctly.patch create mode 100644 0001-pulse-server-also-advance-read-pointer-in-underrun.patch delete mode 100644 0002-spa-support-the-speakers-output-only-case-in-report_.patch delete mode 100644 pipewire-0.3.59.obscpio create mode 100644 pipewire-0.3.60.obscpio diff --git a/0001-filter-chain-iterate-the-port-correctly.patch b/0001-filter-chain-iterate-the-port-correctly.patch deleted file mode 100644 index eacfa79..0000000 --- a/0001-filter-chain-iterate-the-port-correctly.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 94a64268613adac8ef6f3e6c1f04468220540d00 Mon Sep 17 00:00:00 2001 -From: Wim Taymans -Date: Mon, 3 Oct 2022 09:55:44 +0200 -Subject: [PATCH] filter-chain: iterate the port correctly - -Don't use the number of handles to iterate the output ports but the -number of output ports on the node. - -Fixes #2737 ---- - src/modules/module-filter-chain.c | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/src/modules/module-filter-chain.c b/src/modules/module-filter-chain.c -index 6a899ef5f..9d65aa938 100644 ---- a/src/modules/module-filter-chain.c -+++ b/src/modules/module-filter-chain.c -@@ -1561,6 +1561,10 @@ static int load_node(struct graph *graph, struct spa_json *json) - node->control_port = calloc(desc->n_control, sizeof(struct port)); - node->notify_port = calloc(desc->n_notify, sizeof(struct port)); - -+ pw_log_info("loaded n_input:%d n_output:%d n_control:%d n_notify:%d", -+ desc->n_input, desc->n_output, -+ desc->n_control, desc->n_notify); -+ - for (i = 0; i < desc->n_input; i++) { - struct port *port = &node->input_port[i]; - port->node = node; -@@ -1953,6 +1957,8 @@ static int setup_graph(struct graph *graph, struct spa_json *inputs, struct spa_ - gh->hndl = &node->hndl[i]; - gh->desc = d; - -+ } -+ for (i = 0; i < desc->n_output; i++) { - spa_list_for_each(link, &node->output_port[i].link_list, output_link) - link->input->node->n_deps--; - } --- -2.37.3 - diff --git a/0001-pulse-server-also-advance-read-pointer-in-underrun.patch b/0001-pulse-server-also-advance-read-pointer-in-underrun.patch new file mode 100644 index 0000000..3360b1e --- /dev/null +++ b/0001-pulse-server-also-advance-read-pointer-in-underrun.patch @@ -0,0 +1,36 @@ +From b720da771efa950cf380101bed42d5d5ee177908 Mon Sep 17 00:00:00 2001 +From: Wim Taymans +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 +--- + src/modules/module-protocol-pulse/pulse-server.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/src/modules/module-protocol-pulse/pulse-server.c b/src/modules/module-protocol-pulse/pulse-server.c +index b18273e98..07f664ba1 100644 +--- 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", +-- +2.38.1 + diff --git a/0002-spa-support-the-speakers-output-only-case-in-report_.patch b/0002-spa-support-the-speakers-output-only-case-in-report_.patch deleted file mode 100644 index 19eedd9..0000000 --- a/0002-spa-support-the-speakers-output-only-case-in-report_.patch +++ /dev/null @@ -1,73 +0,0 @@ -From a2278a5f70fcc03ee72173c44896928d4c6b88d5 Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Sat, 29 Oct 2022 20:22:06 +0200 -Subject: [PATCH] spa: support the speakers (output) only case in - report_jack_state() - -The Realtek ALC4080 USB audio device (integrated in the -motherboards) can detect the presence on all I/O jacks. - -If user connects only speakers, it's a valid case. - -BugLink: https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/2744 ---- - spa/plugins/alsa/acp/acp.c | 29 +++++++++++++++++++++++++++-- - 1 file changed, 27 insertions(+), 2 deletions(-) - -diff --git a/spa/plugins/alsa/acp/acp.c b/spa/plugins/alsa/acp/acp.c -index f23232ed3ab9..c49c9e088e88 100644 ---- a/spa/plugins/alsa/acp/acp.c -+++ b/spa/plugins/alsa/acp/acp.c -@@ -624,7 +624,7 @@ static int report_jack_state(snd_mixer_elem_t *melem, unsigned int mask) - pa_card *impl = snd_mixer_elem_get_callback_private(melem); - snd_hctl_elem_t *elem = snd_mixer_elem_get_private(melem); - snd_ctl_elem_value_t *elem_value; -- bool plugged_in; -+ bool plugged_in, any_input_port_available; - void *state; - pa_alsa_jack *jack; - struct temp_port_avail *tp, *tports; -@@ -735,6 +735,31 @@ static int report_jack_state(snd_mixer_elem_t *melem, unsigned int mask) - if (impl->card.active_profile_index != ACP_INVALID_INDEX) - active_available = impl->card.profiles[impl->card.active_profile_index]->available; - -+ /* First round - detect, if we have any input port available. -+ If the hardware can report the state for all I/O jacks, only speakers -+ may be plugged in. */ -+ any_input_port_available = false; -+ PA_HASHMAP_FOREACH(profile, impl->profiles, state) { -+ pa_device_port *port; -+ void *state2; -+ -+ if (profile->profile.flags & ACP_PROFILE_OFF) -+ continue; -+ -+ PA_HASHMAP_FOREACH(port, impl->ports, state2) { -+ if (!pa_hashmap_get(port->profiles, profile->profile.name)) -+ continue; -+ -+ if (port->port.direction == ACP_DIRECTION_CAPTURE && -+ port->port.available != ACP_AVAILABLE_NO) { -+ any_input_port_available = true; -+ goto input_port_found; -+ } -+ } -+ } -+input_port_found: -+ -+ /* Second round */ - PA_HASHMAP_FOREACH(profile, impl->profiles, state) { - pa_device_port *port; - void *state2; -@@ -768,7 +793,7 @@ static int report_jack_state(snd_mixer_elem_t *melem, unsigned int mask) - - if (has_input_port && !has_output_port && found_available_input_port) - available = ACP_AVAILABLE_YES; -- if (has_output_port && !has_input_port && found_available_output_port) -+ if (has_output_port && (!has_input_port || !any_input_port_available) && found_available_output_port) - available = ACP_AVAILABLE_YES; - if (has_output_port && has_input_port && found_available_output_port && found_available_input_port) - available = ACP_AVAILABLE_YES; --- -2.35.3 - diff --git a/_service b/_service index e646668..b75566f 100644 --- a/_service +++ b/_service @@ -3,7 +3,7 @@ git https://gitlab.freedesktop.org/pipewire/pipewire.git - refs/tags/0.3.59 + refs/tags/0.3.60 @PARENT_TAG@