From e6f0ad0a2837cd8a45699f727f6b16fa89731e01 Mon Sep 17 00:00:00 2001 From: DistroBaker Date: Sat, 13 Mar 2021 18:40:20 +0000 Subject: [PATCH] Merged update from upstream sources This is an automated DistroBaker update from upstream sources. If you do not know what this is about or would like to opt out, contact the OSCI team. Source: https://src.fedoraproject.org/rpms/pipewire.git#84668a92e47c5c00cc1b075a14da4bbc981c1bda --- .gitignore | 1 + ...2dp-codec-profiles-in-route-profiles.patch | 40 ---- ...start-media-session-through-pipewire.patch | 25 +++ ...-the-right-direction-to-ucm_set_port.patch | 29 +++ 0005-fix-some-warnings.patch | 23 -- 0006-spa-escape-double-quotes.patch | 42 ---- ...eed-to-be-distributed-to-all-channel.patch | 37 ---- ...5-backend-native-Check-volume-values.patch | 141 ------------ ...don-t-switch-to-pro-audio-by-default.patch | 30 --- ...t-keep-better-track-of-param-changes.patch | 208 ------------------ ...r-print-encoding-name-in-format_info.patch | 62 ------ ...se-server-handle-unsupported-formats.patch | 176 --------------- 0022-pw-cli-always-output-to-stdout.patch | 59 ----- ...cy-node-don-t-crash-without-metadata.patch | 26 --- ...uldn-t-list-a2dp-profiles-when-not-c.patch | 26 --- pipewire.spec | 33 +-- sources | 2 +- 17 files changed, 75 insertions(+), 885 deletions(-) delete mode 100644 0001-bluez5-include-a2dp-codec-profiles-in-route-profiles.patch create mode 100644 0001-conf-start-media-session-through-pipewire.patch create mode 100644 0002-alsa-pass-the-right-direction-to-ucm_set_port.patch delete mode 100644 0005-fix-some-warnings.patch delete mode 100644 0006-spa-escape-double-quotes.patch delete mode 100644 0009-bluez5-volumes-need-to-be-distributed-to-all-channel.patch delete mode 100644 0011-bluez5-backend-native-Check-volume-values.patch delete mode 100644 0012-media-session-don-t-switch-to-pro-audio-by-default.patch delete mode 100644 0013-audioconvert-keep-better-track-of-param-changes.patch delete mode 100644 0018-pulse-server-print-encoding-name-in-format_info.patch delete mode 100644 0019-pulse-server-handle-unsupported-formats.patch delete mode 100644 0022-pw-cli-always-output-to-stdout.patch delete mode 100644 0024-policy-node-don-t-crash-without-metadata.patch delete mode 100644 0025-bluez5-route-shouldn-t-list-a2dp-profiles-when-not-c.patch diff --git a/.gitignore b/.gitignore index d24226f..cdf8c41 100644 --- a/.gitignore +++ b/.gitignore @@ -41,3 +41,4 @@ /pipewire-0.3.20.tar.gz /pipewire-0.3.21.tar.gz /pipewire-0.3.22.tar.gz +/pipewire-0.3.23.tar.gz diff --git a/0001-bluez5-include-a2dp-codec-profiles-in-route-profiles.patch b/0001-bluez5-include-a2dp-codec-profiles-in-route-profiles.patch deleted file mode 100644 index d1f65c3..0000000 --- a/0001-bluez5-include-a2dp-codec-profiles-in-route-profiles.patch +++ /dev/null @@ -1,40 +0,0 @@ -From df1dbee687c819095a6fddce3b24943f9ac47dbc Mon Sep 17 00:00:00 2001 -From: Pauli Virtanen -Date: Sun, 14 Feb 2021 14:27:58 +0200 -Subject: [PATCH 01/30] bluez5: include a2dp codec profiles in route profiles - ---- - spa/plugins/bluez5/bluez5-device.c | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/spa/plugins/bluez5/bluez5-device.c b/spa/plugins/bluez5/bluez5-device.c -index 84c1fa6c2..9e42d9d99 100644 ---- a/spa/plugins/bluez5/bluez5-device.c -+++ b/spa/plugins/bluez5/bluez5-device.c -@@ -666,8 +666,9 @@ static struct spa_pod *build_route(struct impl *this, struct spa_pod_builder *b, - const char *name_prefix, *description, *port_type; - enum spa_param_availability available; - enum spa_bt_form_factor ff; -+ const struct a2dp_codec *codec; - char name[128]; -- uint32_t i, mask; -+ uint32_t i, j, mask; - - ff = spa_bt_form_factor_from_class(device->bluetooth_class); - -@@ -769,10 +770,9 @@ static struct spa_pod *build_route(struct impl *this, struct spa_pod_builder *b, - spa_pod_builder_pop(b, &f[1]); - spa_pod_builder_prop(b, SPA_PARAM_ROUTE_profiles, 0); - spa_pod_builder_push_array(b, &f[1]); -- for (i = 1; i < 3; i++) { -- if (profile_direction_mask(this, i) & (1 << direction)) -+ for (i = 1; (j = get_profile_from_index(this, i, &codec)) != SPA_ID_INVALID; i++) -+ if (profile_direction_mask(this, j) & (1 << direction)) - spa_pod_builder_int(b, i); -- } - spa_pod_builder_pop(b, &f[1]); - - if (dev != SPA_ID_INVALID) { --- -2.26.2 - diff --git a/0001-conf-start-media-session-through-pipewire.patch b/0001-conf-start-media-session-through-pipewire.patch new file mode 100644 index 0000000..efde25e --- /dev/null +++ b/0001-conf-start-media-session-through-pipewire.patch @@ -0,0 +1,25 @@ +From 8fb25faa9d66dc1125efd1ca401c88cc96f797db Mon Sep 17 00:00:00 2001 +From: Wim Taymans +Date: Thu, 4 Mar 2021 15:38:16 +0100 +Subject: [PATCH 1/2] conf: start media-session through pipewire + +--- + src/daemon/pipewire.conf.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/daemon/pipewire.conf.in b/src/daemon/pipewire.conf.in +index ed4ee3b29..b4053f9de 100644 +--- a/src/daemon/pipewire.conf.in ++++ b/src/daemon/pipewire.conf.in +@@ -203,7 +203,7 @@ context.exec = { + # but it is better to start it as a systemd service. + # Run the session manager with -h for options. + # +- @comment@"@media_session_path@" = { args = "" } ++ "@media_session_path@" = { args = "" } + # + # You can optionally start the pulseaudio-server here as well + # but it is better to start it as a systemd service. +-- +2.26.2 + diff --git a/0002-alsa-pass-the-right-direction-to-ucm_set_port.patch b/0002-alsa-pass-the-right-direction-to-ucm_set_port.patch new file mode 100644 index 0000000..ea0c036 --- /dev/null +++ b/0002-alsa-pass-the-right-direction-to-ucm_set_port.patch @@ -0,0 +1,29 @@ +From 74a8dde7d67f83bbb657d3889ed588110151f362 Mon Sep 17 00:00:00 2001 +From: Wim Taymans +Date: Mon, 8 Mar 2021 17:40:32 +0100 +Subject: [PATCH 2/2] alsa: pass the right direction to ucm_set_port() + +The function requires true for playback ports and false otherwise. + +See #867 +--- + spa/plugins/alsa/acp/acp.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/spa/plugins/alsa/acp/acp.c b/spa/plugins/alsa/acp/acp.c +index b348e0ee4..640c46d60 100644 +--- a/spa/plugins/alsa/acp/acp.c ++++ b/spa/plugins/alsa/acp/acp.c +@@ -1774,7 +1774,8 @@ int acp_device_set_port(struct acp_device *dev, uint32_t port_index, uint32_t fl + mixer_volume_init(impl, d); + + sync_mixer(d, p); +- res = pa_alsa_ucm_set_port(d->ucm_context, p, true); ++ res = pa_alsa_ucm_set_port(d->ucm_context, p, ++ dev->direction == ACP_DIRECTION_PLAYBACK); + } else { + pa_alsa_port_data *data; + +-- +2.26.2 + diff --git a/0005-fix-some-warnings.patch b/0005-fix-some-warnings.patch deleted file mode 100644 index 56987bf..0000000 --- a/0005-fix-some-warnings.patch +++ /dev/null @@ -1,23 +0,0 @@ -From 63a3811aa76802e9585e04cf12bf8de617442105 Mon Sep 17 00:00:00 2001 -From: Wim Taymans -Date: Thu, 18 Feb 2021 12:42:06 +0100 -Subject: [PATCH 05/30] fix some warnings - ---- - spa/plugins/bluez5/backend-native.c | 2 +- - src/examples/media-session/default-routes.c | 18 +++++++++++++----- - 2 files changed, 14 insertions(+), 6 deletions(-) - -diff --git a/spa/plugins/bluez5/backend-native.c b/spa/plugins/bluez5/backend-native.c -index 4df714088..b4d4e5edf 100644 ---- a/spa/plugins/bluez5/backend-native.c -+++ b/spa/plugins/bluez5/backend-native.c -@@ -437,7 +437,7 @@ static bool rfcomm_hfp_hf(struct spa_source *source, char* buf) - struct rfcomm *rfcomm = source->data; - struct spa_bt_backend *backend = rfcomm->backend; - unsigned int features; -- unsigned int gain; -+ unsigned int SPA_UNUSED gain; - unsigned int selected_codec; - char* token; - char separators[] = "\r\n:"; diff --git a/0006-spa-escape-double-quotes.patch b/0006-spa-escape-double-quotes.patch deleted file mode 100644 index 1727a84..0000000 --- a/0006-spa-escape-double-quotes.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 6a219092818a7a7e357441256d8070ae77ac2d3a Mon Sep 17 00:00:00 2001 -From: eater <=@eater.me> -Date: Thu, 18 Feb 2021 13:59:09 +0100 -Subject: [PATCH 06/30] spa: escape double quotes - ---- - spa/include/spa/utils/json.h | 3 +++ - spa/tests/test-json.c | 4 ++-- - 2 files changed, 5 insertions(+), 2 deletions(-) - -diff --git a/spa/include/spa/utils/json.h b/spa/include/spa/utils/json.h -index 01ff0d567..de2cce6fa 100644 ---- a/spa/include/spa/utils/json.h -+++ b/spa/include/spa/utils/json.h -@@ -346,6 +346,9 @@ static inline int spa_json_encode_string(char *str, int size, const char *val) - case '\f': - __PUT('\\'); __PUT('f'); - break; -+ case '"': -+ __PUT('\\'); __PUT('"'); -+ break; - default: - __PUT(*val); - break; -diff --git a/spa/tests/test-json.c b/spa/tests/test-json.c -index dd510841f..c2bb5f815 100644 ---- a/spa/tests/test-json.c -+++ b/spa/tests/test-json.c -@@ -160,8 +160,8 @@ static void test_encode(void) - spa_assert(strncmp(dst4, "\"tes", 4) == 0); - spa_assert(spa_json_encode_string(dst6, sizeof(dst6), "test") == 6); - spa_assert(strncmp(dst6, "\"test\"", 6) == 0); -- spa_assert(spa_json_encode_string(dst, sizeof(dst), "test\"\n\r \t\b\f\'") == 19); -- spa_assert(strcmp(dst, "\"test\"\\n\\r \\t\\b\\f'\"") == 0); -+ spa_assert(spa_json_encode_string(dst, sizeof(dst), "test\"\n\r \t\b\f\'") == 20); -+ spa_assert(strcmp(dst, "\"test\\\"\\n\\r \\t\\b\\f'\"") == 0); - } - - int main(int argc, char *argv[]) --- -2.26.2 - diff --git a/0009-bluez5-volumes-need-to-be-distributed-to-all-channel.patch b/0009-bluez5-volumes-need-to-be-distributed-to-all-channel.patch deleted file mode 100644 index 106cdca..0000000 --- a/0009-bluez5-volumes-need-to-be-distributed-to-all-channel.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 8c5ca000ef7fddd9be9cd2211d880736e97b956d Mon Sep 17 00:00:00 2001 -From: Wim Taymans -Date: Thu, 18 Feb 2021 17:47:22 +0100 -Subject: [PATCH 09/30] bluez5: volumes need to be distributed to all channels - -Otherwise some channels might become silent. - -See #741 ---- - spa/plugins/bluez5/bluez5-device.c | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - -diff --git a/spa/plugins/bluez5/bluez5-device.c b/spa/plugins/bluez5/bluez5-device.c -index 4698efb92..be7064941 100644 ---- a/spa/plugins/bluez5/bluez5-device.c -+++ b/spa/plugins/bluez5/bluez5-device.c -@@ -923,11 +923,15 @@ static int node_set_volume(struct impl *this, struct node *node, float volumes[] - uint8_t buffer[4096]; - struct spa_pod_builder b = { 0 }; - struct spa_pod_frame f[1]; -+ uint32_t i; -+ -+ if (n_volumes == 0) -+ return -EINVAL; - - spa_log_info(this->log, "node %p volume %f", node, volumes[0]); - -- node->n_channels = n_volumes; -- memcpy(node->volumes, volumes, sizeof(float) * SPA_AUDIO_MAX_CHANNELS); -+ for (i = 0; i < node->n_channels; i++) -+ node->volumes[i] = volumes[i % n_volumes]; - - spa_pod_builder_init(&b, buffer, sizeof(buffer)); - spa_pod_builder_push_object(&b, &f[0], --- -2.26.2 - diff --git a/0011-bluez5-backend-native-Check-volume-values.patch b/0011-bluez5-backend-native-Check-volume-values.patch deleted file mode 100644 index 4f2c038..0000000 --- a/0011-bluez5-backend-native-Check-volume-values.patch +++ /dev/null @@ -1,141 +0,0 @@ -From 7a5a94470453e0cbd3a087b1be2aa8960ff43c07 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Danis?= -Date: Wed, 17 Feb 2021 18:41:24 +0100 -Subject: [PATCH 11/30] bluez5: backend-native: Check volume values - -The value from +VGM/+VGS AT commands or events should be between 0 than 15. ---- - spa/plugins/bluez5/backend-native.c | 68 +++++++++++++++++++++++------ - 1 file changed, 55 insertions(+), 13 deletions(-) - -diff --git a/spa/plugins/bluez5/backend-native.c b/spa/plugins/bluez5/backend-native.c -index b4d4e5edf..2979a0f2e 100644 ---- a/spa/plugins/bluez5/backend-native.c -+++ b/spa/plugins/bluez5/backend-native.c -@@ -199,6 +199,8 @@ static void rfcomm_send_reply(struct spa_source *source, char *data) - #ifdef HAVE_BLUEZ_5_BACKEND_HSP_NATIVE - static bool rfcomm_hsp_ag(struct spa_source *source, char* buf) - { -+ struct rfcomm *rfcomm = source->data; -+ struct spa_bt_backend *backend = rfcomm->backend; - unsigned int gain, dummy; - - /* There are only three HSP AT commands: -@@ -206,11 +208,21 @@ static bool rfcomm_hsp_ag(struct spa_source *source, char* buf) - * AT+VGM=value: value between 0 and 15, sent by the HS to AG to set the microphone gain. - * AT+CKPD=200: Sent by HS when headset button is pressed. */ - if (sscanf(buf, "AT+VGS=%d", &gain) == 1) { -- /* t->speaker_gain = gain; */ -- rfcomm_send_reply(source, "OK"); -+ if (gain <= 15) { -+ /* t->speaker_gain = gain; */ -+ rfcomm_send_reply(source, "OK"); -+ } else { -+ spa_log_debug(backend->log, NAME": RFCOMM receive unsupported VGS gain: %s", buf); -+ rfcomm_send_reply(source, "ERROR"); -+ } - } else if (sscanf(buf, "AT+VGM=%d", &gain) == 1) { -- /* t->microphone_gain = gain; */ -- rfcomm_send_reply(source, "OK"); -+ if (gain <= 15) { -+ /* t->microphone_gain = gain; */ -+ rfcomm_send_reply(source, "OK"); -+ } else { -+ rfcomm_send_reply(source, "ERROR"); -+ spa_log_debug(backend->log, NAME": RFCOMM receive unsupported VGM gain: %s", buf); -+ } - } else if (sscanf(buf, "AT+CKPD=%d", &dummy) == 1) { - rfcomm_send_reply(source, "OK"); - } else { -@@ -222,6 +234,8 @@ static bool rfcomm_hsp_ag(struct spa_source *source, char* buf) - - static bool rfcomm_hsp_hs(struct spa_source *source, char* buf) - { -+ struct rfcomm *rfcomm = source->data; -+ struct spa_bt_backend *backend = rfcomm->backend; - unsigned int gain; - - /* There are only three HSP AT result codes: -@@ -232,9 +246,17 @@ static bool rfcomm_hsp_hs(struct spa_source *source, char* buf) - * RING: Sent by AG to HS to notify of an incoming call. It can safely be ignored because - * it does not expect a reply. */ - if (sscanf(buf, "\r\n+VGS=%d\r\n", &gain) == 1) { -- /* t->microphone_gain = gain; */ -+ if (gain <= 15) { -+ /* t->microphone_gain = gain; */ -+ } else { -+ spa_log_debug(backend->log, NAME": RFCOMM receive unsupported VGS gain: %s", buf); -+ } - } else if (sscanf(buf, "\r\n+VGM=%d\r\n", &gain) == 1) { -- /* t->speaker_gain = gain; */ -+ if (gain <= 15) { -+ /* t->speaker_gain = gain; */ -+ } else { -+ spa_log_debug(backend->log, NAME": RFCOMM receive unsupported VGM gain: %s", buf); -+ } - } - - return true; -@@ -420,11 +442,21 @@ static bool rfcomm_hfp_ag(struct spa_source *source, char* buf) - } - rfcomm_send_reply(source, "OK"); - } else if (sscanf(buf, "AT+VGM=%u", &gain) == 1) { -- /* t->microphone_gain = gain; */ -- rfcomm_send_reply(source, "OK"); -+ if (gain <= 15) { -+ /* t->microphone_gain = gain; */ -+ rfcomm_send_reply(source, "OK"); -+ } else { -+ spa_log_debug(backend->log, NAME": RFCOMM receive unsupported VGM gain: %s", buf); -+ rfcomm_send_reply(source, "ERROR"); -+ } - } else if (sscanf(buf, "AT+VGS=%u", &gain) == 1) { -- /* t->speaker_gain = gain; */ -- rfcomm_send_reply(source, "OK"); -+ if (gain <= 15) { -+ /* t->speaker_gain = gain; */ -+ rfcomm_send_reply(source, "OK"); -+ } else { -+ spa_log_debug(backend->log, NAME": RFCOMM receive unsupported VGS gain: %s", buf); -+ rfcomm_send_reply(source, "ERROR"); -+ } - } else { - return false; - } -@@ -437,7 +469,7 @@ static bool rfcomm_hfp_hf(struct spa_source *source, char* buf) - struct rfcomm *rfcomm = source->data; - struct spa_bt_backend *backend = rfcomm->backend; - unsigned int features; -- unsigned int SPA_UNUSED gain; -+ unsigned int gain; - unsigned int selected_codec; - char* token; - char separators[] = "\r\n:"; -@@ -491,12 +523,22 @@ static bool rfcomm_hfp_hf(struct spa_source *source, char* buf) - /* get next token */ - token = strtok(NULL, separators); - gain = atoi(token); -- /* t->speaker_gain = gain; */ -+ -+ if (gain <= 15) { -+ /* t->speaker_gain = gain; */ -+ } else { -+ spa_log_debug(backend->log, NAME": RFCOMM receive unsupported VGM gain: %s", token); -+ } - } else if (strncmp(token, "+VGS", 4) == 0) { - /* get next token */ - token = strtok(NULL, separators); - gain = atoi(token); -- /* t->microphone_gain = gain; */ -+ -+ if (gain <= 15) { -+ /* t->microphone_gain = gain; */ -+ } else { -+ spa_log_debug(backend->log, NAME": RFCOMM receive unsupported VGS gain: %s", token); -+ } - } else if (strncmp(token, "OK", 5) == 0) { - switch(rfcomm->hf_state) { - case hfp_hf_brsf: --- -2.26.2 - diff --git a/0012-media-session-don-t-switch-to-pro-audio-by-default.patch b/0012-media-session-don-t-switch-to-pro-audio-by-default.patch deleted file mode 100644 index f594a83..0000000 --- a/0012-media-session-don-t-switch-to-pro-audio-by-default.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 84fc63e60168e2c2f43875423899b4ae3bd89a7b Mon Sep 17 00:00:00 2001 -From: Wim Taymans -Date: Thu, 18 Feb 2021 19:49:34 +0100 -Subject: [PATCH 12/30] media-session: don't switch to pro-audio by default - -Ignore the pro-audio profile when finding the best profile. We only -want to enable the profile when explicitly set. - -Fixes #761 ---- - src/examples/media-session/default-profile.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/src/examples/media-session/default-profile.c b/src/examples/media-session/default-profile.c -index b17171e63..e311490ea 100644 ---- a/src/examples/media-session/default-profile.c -+++ b/src/examples/media-session/default-profile.c -@@ -176,6 +176,9 @@ static int find_best_profile(struct device *dev, struct profile *pr) - parse_profile(p, &t) < 0) - continue; - -+ if (t.name && strcmp(t.name, "pro-audio") == 0) -+ continue; -+ - if (t.name && strcmp(t.name, "off") == 0) { - off = t; - } --- -2.26.2 - diff --git a/0013-audioconvert-keep-better-track-of-param-changes.patch b/0013-audioconvert-keep-better-track-of-param-changes.patch deleted file mode 100644 index f22e361..0000000 --- a/0013-audioconvert-keep-better-track-of-param-changes.patch +++ /dev/null @@ -1,208 +0,0 @@ -From 44919c83fc51aa5e1a22c903e841897c1b4d274c Mon Sep 17 00:00:00 2001 -From: Wim Taymans -Date: Fri, 19 Feb 2021 09:55:53 +0100 -Subject: [PATCH 13/30] audioconvert: keep better track of param changes - -Keep track of the param changes with the user counter. Make sure to -flip the serial switch whenever a change is pending. Previously -we copied the param from the channelmixer or follower but that -did not always result in a serial change. - -Fixes #764 ---- - spa/plugins/audioconvert/audioadapter.c | 42 +++++++++++++++++-------- - spa/plugins/audioconvert/audioconvert.c | 32 +++++++++++++------ - 2 files changed, 52 insertions(+), 22 deletions(-) - -diff --git a/spa/plugins/audioconvert/audioadapter.c b/spa/plugins/audioconvert/audioadapter.c -index 75b4d1407..5a96c7abb 100644 ---- a/spa/plugins/audioconvert/audioadapter.c -+++ b/spa/plugins/audioconvert/audioadapter.c -@@ -76,6 +76,12 @@ struct impl { - - uint64_t info_all; - struct spa_node_info info; -+#define IDX_EnumFormat 0 -+#define IDX_PropInfo 1 -+#define IDX_Props 2 -+#define IDX_Format 3 -+#define IDX_EnumPortConfig 4 -+#define IDX_PortConfig 5 - struct spa_param_info params[6]; - - struct spa_hook_list hooks; -@@ -206,9 +212,19 @@ static int link_io(struct impl *this) - - static void emit_node_info(struct impl *this, bool full) - { -+ uint32_t i; -+ - if (full) - this->info.change_mask = this->info_all; - if (this->info.change_mask) { -+ if (this->info.change_mask & SPA_NODE_CHANGE_MASK_PARAMS) { -+ for (i = 0; i < SPA_N_ELEMENTS(this->params); i++) { -+ if (this->params[i].user > 0) { -+ this->params[i].flags ^= SPA_PARAM_INFO_SERIAL; -+ this->params[i].user = 0; -+ } -+ } -+ } - spa_node_emit_info(&this->hooks, &this->info); - this->info.change_mask = 0; - } -@@ -585,15 +601,15 @@ static void convert_node_info(void *data, const struct spa_node_info *info) - - switch (info->params[i].id) { - case SPA_PARAM_PropInfo: -- idx = 1; -+ idx = IDX_PropInfo; - break; - case SPA_PARAM_Props: -- idx = 2; -+ idx = IDX_Props; - break; - } - if (idx != SPA_ID_INVALID) { -- this->params[idx] = info->params[i]; - this->info.change_mask |= SPA_NODE_CHANGE_MASK_PARAMS; -+ this->params[idx].user++; - } - } - } -@@ -662,12 +678,12 @@ static void follower_info(void *data, const struct spa_node_info *info) - - switch (info->params[i].id) { - case SPA_PARAM_Props: -- idx = 2; -+ idx = IDX_Props; - break; - } - if (idx != SPA_ID_INVALID) { -- this->params[idx] = info->params[i]; - this->info.change_mask |= SPA_NODE_CHANGE_MASK_PARAMS; -+ this->params[idx].user++; - } - } - } -@@ -687,12 +703,12 @@ static void follower_port_info(void *data, - - switch (info->params[i].id) { - case SPA_PARAM_Format: -- idx = 3; -+ idx = IDX_Format; - break; - } - if (idx != SPA_ID_INVALID) { -- this->params[idx] = info->params[i]; - this->info.change_mask |= SPA_NODE_CHANGE_MASK_PARAMS; -+ this->params[idx].user++; - } - } - } -@@ -1166,12 +1182,12 @@ impl_init(const struct spa_handle_factory *factory, - SPA_NODE_FLAG_IN_PORT_CONFIG | - SPA_NODE_FLAG_OUT_PORT_CONFIG | - SPA_NODE_FLAG_NEED_CONFIGURE; -- this->params[0] = SPA_PARAM_INFO(SPA_PARAM_EnumFormat, SPA_PARAM_INFO_READ); -- this->params[1] = SPA_PARAM_INFO(SPA_PARAM_PropInfo, SPA_PARAM_INFO_READ); -- this->params[2] = SPA_PARAM_INFO(SPA_PARAM_Props, SPA_PARAM_INFO_READWRITE); -- this->params[3] = SPA_PARAM_INFO(SPA_PARAM_Format, SPA_PARAM_INFO_WRITE); -- this->params[4] = SPA_PARAM_INFO(SPA_PARAM_EnumPortConfig, SPA_PARAM_INFO_READ); -- this->params[5] = SPA_PARAM_INFO(SPA_PARAM_PortConfig, SPA_PARAM_INFO_READWRITE); -+ this->params[IDX_EnumFormat] = SPA_PARAM_INFO(SPA_PARAM_EnumFormat, SPA_PARAM_INFO_READ); -+ this->params[IDX_PropInfo] = SPA_PARAM_INFO(SPA_PARAM_PropInfo, SPA_PARAM_INFO_READ); -+ this->params[IDX_Props] = SPA_PARAM_INFO(SPA_PARAM_Props, SPA_PARAM_INFO_READWRITE); -+ this->params[IDX_Format] = SPA_PARAM_INFO(SPA_PARAM_Format, SPA_PARAM_INFO_WRITE); -+ this->params[IDX_EnumPortConfig] = SPA_PARAM_INFO(SPA_PARAM_EnumPortConfig, SPA_PARAM_INFO_READ); -+ this->params[IDX_PortConfig] = SPA_PARAM_INFO(SPA_PARAM_PortConfig, SPA_PARAM_INFO_READWRITE); - this->info.params = this->params; - this->info.n_params = 6; - -diff --git a/spa/plugins/audioconvert/audioconvert.c b/spa/plugins/audioconvert/audioconvert.c -index 02cf78302..570db74b2 100644 ---- a/spa/plugins/audioconvert/audioconvert.c -+++ b/spa/plugins/audioconvert/audioconvert.c -@@ -81,7 +81,11 @@ struct impl { - - uint64_t info_all; - struct spa_node_info info; -- struct spa_param_info params[8]; -+#define IDX_EnumPortConfig 0 -+#define IDX_PortConfig 1 -+#define IDX_PropInfo 2 -+#define IDX_Props 3 -+ struct spa_param_info params[4]; - - int n_links; - struct link links[8]; -@@ -121,12 +125,22 @@ struct impl { - - static void emit_node_info(struct impl *this, bool full) - { -+ uint32_t i; -+ - if (this->add_listener) - return; - - if (full) - this->info.change_mask = this->info_all; - if (this->info.change_mask) { -+ if (this->info.change_mask & SPA_NODE_CHANGE_MASK_PARAMS) { -+ for (i = 0; i < SPA_N_ELEMENTS(this->params); i++) { -+ if (this->params[i].user > 0) { -+ this->params[i].flags ^= SPA_PARAM_INFO_SERIAL; -+ this->params[i].user = 0; -+ } -+ } -+ } - spa_node_emit_info(&this->hooks, &this->info); - this->info.change_mask = 0; - } -@@ -606,15 +620,15 @@ static void on_channelmix_info(void *data, const struct spa_node_info *info) - - switch (info->params[i].id) { - case SPA_PARAM_PropInfo: -- idx = 2; -+ idx = IDX_PropInfo; - break; - case SPA_PARAM_Props: -- idx = 3; -+ idx = IDX_Props; - break; - } - if (idx != SPA_ID_INVALID) { -- this->params[idx] = info->params[i]; - this->info.change_mask |= SPA_NODE_CHANGE_MASK_PARAMS; -+ this->params[idx].user++; - } - } - emit_node_info(this, false); -@@ -705,8 +719,8 @@ static int reconfigure_mode(struct impl *this, enum spa_param_port_config_mode m - return res; - - this->info.change_mask |= SPA_NODE_CHANGE_MASK_FLAGS | SPA_NODE_CHANGE_MASK_PARAMS; -- this->params[3].flags ^= SPA_PARAM_INFO_SERIAL; - this->info.flags &= ~SPA_NODE_FLAG_NEED_CONFIGURE; -+ this->params[IDX_Props].user++; - } - - /* notify ports of new node */ -@@ -1253,10 +1267,10 @@ impl_init(const struct spa_handle_factory *factory, - SPA_NODE_FLAG_IN_PORT_CONFIG | - SPA_NODE_FLAG_OUT_PORT_CONFIG | - SPA_NODE_FLAG_NEED_CONFIGURE; -- this->params[0] = SPA_PARAM_INFO(SPA_PARAM_EnumPortConfig, SPA_PARAM_INFO_READ); -- this->params[1] = SPA_PARAM_INFO(SPA_PARAM_PortConfig, SPA_PARAM_INFO_READWRITE); -- this->params[2] = SPA_PARAM_INFO(SPA_PARAM_PropInfo, SPA_PARAM_INFO_READ); -- this->params[3] = SPA_PARAM_INFO(SPA_PARAM_Props, SPA_PARAM_INFO_READWRITE); -+ this->params[IDX_EnumPortConfig] = SPA_PARAM_INFO(SPA_PARAM_EnumPortConfig, SPA_PARAM_INFO_READ); -+ this->params[IDX_PortConfig] = SPA_PARAM_INFO(SPA_PARAM_PortConfig, SPA_PARAM_INFO_READWRITE); -+ this->params[IDX_PropInfo] = SPA_PARAM_INFO(SPA_PARAM_PropInfo, SPA_PARAM_INFO_READ); -+ this->params[IDX_Props] = SPA_PARAM_INFO(SPA_PARAM_Props, SPA_PARAM_INFO_READWRITE); - this->info.params = this->params; - this->info.n_params = 4; - --- -2.26.2 - diff --git a/0018-pulse-server-print-encoding-name-in-format_info.patch b/0018-pulse-server-print-encoding-name-in-format_info.patch deleted file mode 100644 index 13ca5dd..0000000 --- a/0018-pulse-server-print-encoding-name-in-format_info.patch +++ /dev/null @@ -1,62 +0,0 @@ -From 4b591df145afa316e8e047764f9b98fc10cbacd9 Mon Sep 17 00:00:00 2001 -From: Wim Taymans -Date: Fri, 19 Feb 2021 14:57:11 +0100 -Subject: [PATCH 18/30] pulse-server: print encoding name in format_info - ---- - src/modules/module-protocol-pulse/format.c | 21 ++++++++++++++++++++- - src/modules/module-protocol-pulse/message.c | 4 +++- - 2 files changed, 23 insertions(+), 2 deletions(-) - -diff --git a/src/modules/module-protocol-pulse/format.c b/src/modules/module-protocol-pulse/format.c -index 37abe5220..f718e70a7 100644 ---- a/src/modules/module-protocol-pulse/format.c -+++ b/src/modules/module-protocol-pulse/format.c -@@ -476,9 +476,28 @@ enum encoding { - ENCODING_TRUEHD_IEC61937, - ENCODING_DTSHD_IEC61937, - ENCODING_MAX, -- NCODING_INVALID = -1, -+ ENCODING_INVALID = -1, - }; - -+static const char *encoding_names[] = { -+ [ENCODING_ANY] = "ANY", -+ [ENCODING_PCM] = "PCM", -+ [ENCODING_AC3_IEC61937] = "AC3-IEC61937", -+ [ENCODING_EAC3_IEC61937] = "EAC3-IEC61937", -+ [ENCODING_MPEG_IEC61937] = "MPEG-IEC61937", -+ [ENCODING_DTS_IEC61937] = "DTS-IEC61937", -+ [ENCODING_MPEG2_AAC_IEC61937] = "MPEG2-AAC-IEC61937", -+ [ENCODING_TRUEHD_IEC61937] = "TRUEHD-IEC61937", -+ [ENCODING_DTSHD_IEC61937] = "DTSHD-IEC61937", -+}; -+ -+static inline const char *format_encoding2name(enum encoding enc) -+{ -+ if (enc >= 0 && enc < (int)SPA_N_ELEMENTS(encoding_names)) -+ return encoding_names[enc]; -+ return "INVALID"; -+} -+ - struct format_info { - enum encoding encoding; - struct pw_properties *props; -diff --git a/src/modules/module-protocol-pulse/message.c b/src/modules/module-protocol-pulse/message.c -index a0ddce058..e6c7e0a56 100644 ---- a/src/modules/module-protocol-pulse/message.c -+++ b/src/modules/module-protocol-pulse/message.c -@@ -850,7 +850,9 @@ static int message_dump(enum spa_log_level level, struct message *m) - const struct spa_dict_item *it; - if ((res = read_format_info(m, &info)) < 0) - return res; -- pw_log(level, "%u: format-info: n_items:%u", o, info.props->dict.n_items); -+ pw_log(level, "%u: format-info: enc:%s n_items:%u", -+ o, format_encoding2name(info.encoding), -+ info.props->dict.n_items); - spa_dict_for_each(it, &info.props->dict) - pw_log(level, " '%s': '%s'", it->key, it->value); - break; --- -2.26.2 - diff --git a/0019-pulse-server-handle-unsupported-formats.patch b/0019-pulse-server-handle-unsupported-formats.patch deleted file mode 100644 index b2a1095..0000000 --- a/0019-pulse-server-handle-unsupported-formats.patch +++ /dev/null @@ -1,176 +0,0 @@ -From fcf00b3d352d931446a384a768b999520662b599 Mon Sep 17 00:00:00 2001 -From: Wim Taymans -Date: Fri, 19 Feb 2021 15:25:32 +0100 -Subject: [PATCH 19/30] pulse-server: handle unsupported formats - -We can only handle PCM encodings for now, fail conversion otherwise. -If we have no supported formats, return an error code. - -VLC first try to send AC3 or EAC3 passthrough and then tries again -with decoded data. If we accept the encoded data we are just playing -noise. - -Fixes #428 ---- - src/modules/module-protocol-pulse/format.c | 3 + - .../module-protocol-pulse/pulse-server.c | 56 ++++++++++++++++--- - 2 files changed, 51 insertions(+), 8 deletions(-) - -diff --git a/src/modules/module-protocol-pulse/format.c b/src/modules/module-protocol-pulse/format.c -index f718e70a7..4bd0daabe 100644 ---- a/src/modules/module-protocol-pulse/format.c -+++ b/src/modules/module-protocol-pulse/format.c -@@ -563,6 +563,9 @@ static const struct spa_pod *format_info_build_param(struct spa_pod_builder *b, - spa_zero(ss); - spa_zero(map); - -+ if (info->encoding != ENCODING_PCM) -+ return NULL; -+ - if ((str = pw_properties_get(info->props, "format.sample_format")) == NULL) - return NULL; - -diff --git a/src/modules/module-protocol-pulse/pulse-server.c b/src/modules/module-protocol-pulse/pulse-server.c -index 1cce96203..977c9886a 100644 ---- a/src/modules/module-protocol-pulse/pulse-server.c -+++ b/src/modules/module-protocol-pulse/pulse-server.c -@@ -1752,6 +1752,16 @@ static const struct pw_stream_events stream_events = - .drained = stream_drained, - }; - -+static void log_format_info(struct impl *impl, enum spa_log_level level, struct format_info *format) -+{ -+ const struct spa_dict_item *it; -+ pw_log(level, NAME" %p: format %s", -+ impl, format_encoding2name(format->encoding)); -+ spa_dict_for_each(it, &format->props->dict) -+ pw_log(level, NAME" %p: '%s': '%s'", -+ impl, it->key, it->value); -+} -+ - static int do_create_playback_stream(struct client *client, uint32_t command, uint32_t tag, struct message *m) - { - struct impl *impl = client->impl; -@@ -1783,7 +1793,7 @@ static int do_create_playback_stream(struct client *client, uint32_t command, ui - struct pw_properties *props = NULL; - uint8_t n_formats = 0; - struct stream *stream = NULL; -- uint32_t n_params = 0, flags; -+ uint32_t n_params = 0, n_valid_formats = 0, flags; - const struct spa_pod *params[32]; - uint8_t buffer[4096]; - struct spa_pod_builder b = SPA_POD_BUILDER_INIT(buffer, sizeof(buffer)); -@@ -1871,8 +1881,14 @@ static int do_create_playback_stream(struct client *client, uint32_t command, ui - - if (sample_spec_valid(&ss)) { - if ((params[n_params] = format_build_param(&b, -- SPA_PARAM_EnumFormat, &ss, &map)) != NULL) -+ SPA_PARAM_EnumFormat, &ss, &map)) != NULL) { - n_params++; -+ n_valid_formats++; -+ } else { -+ pw_log_warn(NAME" %p: unsupported format:%s rate:%d channels:%u", -+ impl, format_id2name(ss.format), ss.rate, -+ ss.channels); -+ } - } - if (client->version >= 21) { - if ((res = message_get(m, -@@ -1891,9 +1907,12 @@ static int do_create_playback_stream(struct client *client, uint32_t command, ui - goto error_protocol; - - if ((params[n_params] = format_info_build_param(&b, -- SPA_PARAM_EnumFormat, &format)) != NULL) -+ SPA_PARAM_EnumFormat, &format)) != NULL) { - n_params++; -- -+ n_valid_formats++; -+ } else { -+ log_format_info(impl, SPA_LOG_LEVEL_WARN, &format); -+ } - format_info_clear(&format); - } - } -@@ -1901,6 +1920,9 @@ static int do_create_playback_stream(struct client *client, uint32_t command, ui - if (m->offset != m->length) - goto error_protocol; - -+ if (n_valid_formats == 0) -+ goto error_no_formats; -+ - stream = calloc(1, sizeof(struct stream)); - if (stream == NULL) - goto error_errno; -@@ -1968,6 +1990,9 @@ error_errno: - error_protocol: - res = -EPROTO; - goto error; -+error_no_formats: -+ res = -ENOTSUP; -+ goto error; - error_invalid: - res = -EINVAL; - goto error; -@@ -2012,7 +2037,7 @@ static int do_create_record_stream(struct client *client, uint32_t command, uint - struct pw_properties *props = NULL; - uint8_t n_formats = 0; - struct stream *stream = NULL; -- uint32_t n_params = 0, flags, id; -+ uint32_t n_params = 0, n_valid_formats = 0, flags, id; - const struct spa_pod *params[32]; - uint8_t buffer[4096]; - struct spa_pod_builder b = SPA_POD_BUILDER_INIT(buffer, sizeof(buffer)); -@@ -2082,8 +2107,14 @@ static int do_create_record_stream(struct client *client, uint32_t command, uint - } - if (sample_spec_valid(&ss)) { - if ((params[n_params] = format_build_param(&b, -- SPA_PARAM_EnumFormat, &ss, &map)) != NULL) -+ SPA_PARAM_EnumFormat, &ss, &map)) != NULL) { - n_params++; -+ n_valid_formats++; -+ } else { -+ pw_log_warn(NAME" %p: unsupported format:%s rate:%d channels:%u", -+ impl, format_id2name(ss.format), ss.rate, -+ ss.channels); -+ } - } - if (client->version >= 22) { - if ((res = message_get(m, -@@ -2102,9 +2133,12 @@ static int do_create_record_stream(struct client *client, uint32_t command, uint - goto error_protocol; - - if ((params[n_params] = format_info_build_param(&b, -- SPA_PARAM_EnumFormat, &format)) != NULL) -+ SPA_PARAM_EnumFormat, &format)) != NULL) { - n_params++; -- -+ n_valid_formats++; -+ } else { -+ log_format_info(impl, SPA_LOG_LEVEL_WARN, &format); -+ } - format_info_clear(&format); - } - } -@@ -2121,6 +2155,9 @@ static int do_create_record_stream(struct client *client, uint32_t command, uint - if (m->offset != m->length) - goto error_protocol; - -+ if (n_valid_formats == 0) -+ goto error_no_formats; -+ - stream = calloc(1, sizeof(struct stream)); - if (stream == NULL) - goto error_errno; -@@ -2201,6 +2238,9 @@ error_errno: - error_protocol: - res = -EPROTO; - goto error; -+error_no_formats: -+ res = -ENOTSUP; -+ goto error; - error_invalid: - res = -EINVAL; - goto error; --- -2.26.2 - diff --git a/0022-pw-cli-always-output-to-stdout.patch b/0022-pw-cli-always-output-to-stdout.patch deleted file mode 100644 index 4f763f9..0000000 --- a/0022-pw-cli-always-output-to-stdout.patch +++ /dev/null @@ -1,59 +0,0 @@ -From 91875c1fd8ece6b1b94130c50304b715654f8681 Mon Sep 17 00:00:00 2001 -From: Wim Taymans -Date: Fri, 19 Feb 2021 16:42:21 +0100 -Subject: [PATCH 22/30] pw-cli: always output to stdout - -Use spa_debug_pod because spa_debug_format outputs to stderr ---- - src/tools/pw-cli.c | 12 +++++------- - 1 file changed, 5 insertions(+), 7 deletions(-) - -diff --git a/src/tools/pw-cli.c b/src/tools/pw-cli.c -index b682bf34e..7706a15fa 100644 ---- a/src/tools/pw-cli.c -+++ b/src/tools/pw-cli.c -@@ -33,9 +33,10 @@ - #endif - #include - -+#define spa_debug(...) fprintf(stdout,__VA_ARGS__);fputc('\n', stdout) -+ - #include - #include --#include - #include - #include - #include -@@ -681,7 +682,7 @@ static void info_link(struct proxy_data *pd) - printf("\n"); - fprintf(stdout, "%c\tformat:\n", MARK_CHANGE(PW_LINK_CHANGE_MASK_FORMAT)); - if (info->format) -- spa_debug_format(2, NULL, info->format); -+ spa_debug_pod(2, NULL, info->format); - else - fprintf(stdout, "\t\tnone\n"); - print_properties(info->props, MARK_CHANGE(PW_LINK_CHANGE_MASK_PROPS), true); -@@ -815,10 +816,7 @@ static void event_param(void *object, int seq, uint32_t id, - fprintf(stdout, "remote %d object %d param %d index %d\n", - rd->id, data->global->id, id, index); - -- if (spa_pod_is_object_type(param, SPA_TYPE_OBJECT_Format)) -- spa_debug_format(2, NULL, param); -- else -- spa_debug_pod(2, NULL, param); -+ spa_debug_pod(2, NULL, param); - } - - static const struct pw_node_events node_events = { -@@ -2567,7 +2565,7 @@ dump_link(struct data *data, struct global *global, - printf("\n"); - fprintf(stdout, "%sformat:\n", ind); - if (info->format) -- spa_debug_format(8 * (level + 1) + 2, NULL, info->format); -+ spa_debug_pod(8 * (level + 1) + 2, NULL, info->format); - else - fprintf(stdout, "%s\tnone\n", ind); - --- -2.26.2 - diff --git a/0024-policy-node-don-t-crash-without-metadata.patch b/0024-policy-node-don-t-crash-without-metadata.patch deleted file mode 100644 index f0b9767..0000000 --- a/0024-policy-node-don-t-crash-without-metadata.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 3673265ae20d7b59e89cad6c5238c232796731b2 Mon Sep 17 00:00:00 2001 -From: Wim Taymans -Date: Fri, 19 Feb 2021 17:54:31 +0100 -Subject: [PATCH 24/30] policy-node: don't crash without metadata - ---- - src/examples/media-session/policy-node.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/src/examples/media-session/policy-node.c b/src/examples/media-session/policy-node.c -index 89ec31729..3bcab7df4 100644 ---- a/src/examples/media-session/policy-node.c -+++ b/src/examples/media-session/policy-node.c -@@ -810,6 +810,9 @@ static void refresh_auto_default_nodes(struct impl *impl) - { - struct default_node *def; - -+ if (impl->session->metadata == NULL) -+ return; -+ - /* Auto set default nodes */ - for (def = impl->defaults; def->key != NULL; ++def) { - struct node *node; --- -2.26.2 - diff --git a/0025-bluez5-route-shouldn-t-list-a2dp-profiles-when-not-c.patch b/0025-bluez5-route-shouldn-t-list-a2dp-profiles-when-not-c.patch deleted file mode 100644 index ac987d5..0000000 --- a/0025-bluez5-route-shouldn-t-list-a2dp-profiles-when-not-c.patch +++ /dev/null @@ -1,26 +0,0 @@ -From a5dc2493dfccfc168cef01162f38f90e986b8af4 Mon Sep 17 00:00:00 2001 -From: Pauli Virtanen -Date: Fri, 19 Feb 2021 21:16:27 +0200 -Subject: [PATCH 25/30] bluez5: route shouldn't list a2dp profiles when not - connected - ---- - spa/plugins/bluez5/bluez5-device.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/spa/plugins/bluez5/bluez5-device.c b/spa/plugins/bluez5/bluez5-device.c -index ea9930f76..f6a1572f8 100644 ---- a/spa/plugins/bluez5/bluez5-device.c -+++ b/spa/plugins/bluez5/bluez5-device.c -@@ -448,6 +448,8 @@ static uint32_t profile_direction_mask(struct impl *this, uint32_t index) - have_output = true; - else if (profile == SPA_BT_PROFILE_A2DP_SOURCE) - have_input = true; -+ else if (profile == 0) -+ have_output = have_input = false; - else - have_output = have_input = true; - break; --- -2.26.2 - diff --git a/pipewire.spec b/pipewire.spec index da5615a..93d7427 100644 --- a/pipewire.spec +++ b/pipewire.spec @@ -1,6 +1,6 @@ %global majorversion 0 %global minorversion 3 -%global microversion 22 +%global microversion 23 %global apiversion 0.3 %global spaversion 0.2 @@ -8,7 +8,7 @@ %global libversion %{soversion}.%(bash -c '((intversion = (%{minorversion} * 100) + %{microversion})); echo ${intversion}').0 # For rpmdev-bumpspec and releng automation -%global baserelease 5 +%global baserelease 2 #global snapdate 20210107 #global gitcommit b17db2cebc1a5ab2c01851d29c05f79cd2f262bb @@ -52,22 +52,12 @@ Source0: https://gitlab.freedesktop.org/pipewire/pipewire/-/archive/%{version}/p %endif ## upstream patches -Patch0: 0001-bluez5-include-a2dp-codec-profiles-in-route-profiles.patch -Patch1: 0005-fix-some-warnings.patch -Patch2: 0006-spa-escape-double-quotes.patch -Patch3: 0009-bluez5-volumes-need-to-be-distributed-to-all-channel.patch -Patch4: 0011-bluez5-backend-native-Check-volume-values.patch -Patch5: 0012-media-session-don-t-switch-to-pro-audio-by-default.patch -Patch6: 0013-audioconvert-keep-better-track-of-param-changes.patch -Patch7: 0018-pulse-server-print-encoding-name-in-format_info.patch -Patch8: 0019-pulse-server-handle-unsupported-formats.patch -Patch9: 0022-pw-cli-always-output-to-stdout.patch -Patch10: 0024-policy-node-don-t-crash-without-metadata.patch -Patch11: 0025-bluez5-route-shouldn-t-list-a2dp-profiles-when-not-c.patch ## upstreamable patches ## fedora patches +Patch0: 0001-conf-start-media-session-through-pipewire.patch +Patch1: 0002-alsa-pass-the-right-direction-to-ucm_set_port.patch BuildRequires: gettext BuildRequires: meson >= 0.49.0 @@ -289,6 +279,9 @@ rm %{buildroot}%{_userunitdir}/pipewire-pulse.* rm -rf %{buildroot}%{_sysconfdir}/pipewire/media-session.d/with-pulseaudio %endif +# We don't start the media session with systemd yet +rm %{buildroot}%{_userunitdir}/pipewire-media-session.* + %find_lang %{name} # upstream should use udev.pc @@ -447,6 +440,18 @@ systemctl --no-reload preset --global pipewire.socket >/dev/null 2>&1 || : %endif %changelog +* Tue Mar 09 2021 Wim Taymans - 0.3.23-2 +- Add patch to enable UCM Microphones + +* Thu Mar 04 2021 Wim Taymans - 0.3.23-1 +- Update to 0.3.23 + +* Wed Feb 24 2021 Wim Taymans - 0.3.22-7 +- Add patch to sample destroy use after free + +* Wed Feb 24 2021 Wim Taymans - 0.3.22-6 +- Add patch for jack names + * Mon Feb 22 2021 Wim Taymans - 0.3.22-5 - Add some critical patches diff --git a/sources b/sources index 6347674..e12722a 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (pipewire-0.3.22.tar.gz) = a6587e0afd5c90be1733ecf62c6fc68e735ab3b84f2cbbf844bbe1be93e7a23dee07b041ed6b273cab6ab207d2388ae6f2027d0380928555a0155a7cc9ca4a7e +SHA512 (pipewire-0.3.23.tar.gz) = 3594c53aaaeca2087cf8eadac41e16146674430a7f45288bd51e6d84660af908557b3faf15cf9ac3c2095e85d1a4cf871e645724bf3f9ea87438a7442b870791