Accepting request 949435 from multimedia:libs
OBS-URL: https://build.opensuse.org/request/show/949435 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/pipewire?expand=0&rev=49
This commit is contained in:
commit
21136f1a2b
@ -1,75 +0,0 @@
|
||||
From d8c867b51508b7337507e04648ace5df21bde048 Mon Sep 17 00:00:00 2001
|
||||
From: Wim Taymans <wtaymans@redhat.com>
|
||||
Date: Wed, 5 Jan 2022 11:53:47 +0100
|
||||
Subject: [PATCH] alsa: improve rate selection
|
||||
|
||||
Make sure we don't select an invalid rate when the default is set or
|
||||
when the card is already opened in some unsupported rate.
|
||||
|
||||
See #1975
|
||||
---
|
||||
spa/plugins/alsa/alsa-pcm.c | 29 +++++++++++++++--------------
|
||||
1 file changed, 15 insertions(+), 14 deletions(-)
|
||||
|
||||
diff --git a/spa/plugins/alsa/alsa-pcm.c b/spa/plugins/alsa/alsa-pcm.c
|
||||
index a4ea34a94..8e8834ebb 100644
|
||||
--- a/spa/plugins/alsa/alsa-pcm.c
|
||||
+++ b/spa/plugins/alsa/alsa-pcm.c
|
||||
@@ -734,31 +734,32 @@ static int add_rate(struct state *state, uint32_t scale, bool all, uint32_t inde
|
||||
CHECK(snd_pcm_hw_params_get_rate_min(params, &min, &dir), "get_rate_min");
|
||||
CHECK(snd_pcm_hw_params_get_rate_max(params, &max, &dir), "get_rate_max");
|
||||
|
||||
- rate = state->default_rate;
|
||||
if (!state->multi_rate && state->card->format_ref > 0)
|
||||
rate = state->card->rate;
|
||||
+ else
|
||||
+ rate = state->default_rate;
|
||||
|
||||
- if (rate != 0 && !all) {
|
||||
- if (min < rate)
|
||||
- min = rate;
|
||||
- if (max > rate)
|
||||
- max = rate;
|
||||
- }
|
||||
+ if (rate < min || rate > max)
|
||||
+ rate = 0;
|
||||
+
|
||||
+ if (rate != 0 && !all)
|
||||
+ min = max = rate;
|
||||
+
|
||||
+ if (rate == 0)
|
||||
+ rate = state->position ? state->position->clock.rate.denom : DEFAULT_RATE;
|
||||
+
|
||||
+ rate = SPA_CLAMP(rate, min, max);
|
||||
|
||||
spa_pod_builder_prop(b, SPA_FORMAT_AUDIO_rate, 0);
|
||||
|
||||
spa_pod_builder_push_choice(b, &f[0], SPA_CHOICE_None, 0);
|
||||
choice = (struct spa_pod_choice*)spa_pod_builder_frame(b, &f[0]);
|
||||
|
||||
- if (rate == 0)
|
||||
- rate = state->position ? state->position->clock.rate.denom : DEFAULT_RATE;
|
||||
-
|
||||
if (state->n_allowed_rates > 0) {
|
||||
uint32_t i, v, last = 0, count = 0;
|
||||
|
||||
- v = SPA_CLAMP(rate, min, max);
|
||||
- if (uint32_array_contains(state->allowed_rates, state->n_allowed_rates, v)) {
|
||||
- spa_pod_builder_int(b, v * scale);
|
||||
+ if (uint32_array_contains(state->allowed_rates, state->n_allowed_rates, rate)) {
|
||||
+ spa_pod_builder_int(b, rate * scale);
|
||||
count++;
|
||||
}
|
||||
for (i = 0; i < state->n_allowed_rates; i++) {
|
||||
@@ -775,7 +776,7 @@ static int add_rate(struct state *state, uint32_t scale, bool all, uint32_t inde
|
||||
if (count > 1)
|
||||
choice->body.type = SPA_CHOICE_Enum;
|
||||
} else {
|
||||
- spa_pod_builder_int(b, SPA_CLAMP(rate, min, max) * scale);
|
||||
+ spa_pod_builder_int(b, rate * scale);
|
||||
|
||||
if (min != max) {
|
||||
spa_pod_builder_int(b, min * scale);
|
||||
--
|
||||
GitLab
|
||||
|
@ -1,48 +0,0 @@
|
||||
From af11fb4804c97ad0dee73dba059b7a3d42d15bad Mon Sep 17 00:00:00 2001
|
||||
From: Wim Taymans <wtaymans@redhat.com>
|
||||
Date: Wed, 5 Jan 2022 17:02:40 +0100
|
||||
Subject: [PATCH] audioconvert: avoid infinite loop
|
||||
|
||||
When the follower has no param to enumerate we would keep on enumerating
|
||||
the params of the converter forever. Fix this by setting the next value
|
||||
to something that would then stop the iteration.
|
||||
|
||||
Also increase the amount of bits for the follower because it might need
|
||||
them.
|
||||
---
|
||||
spa/plugins/audioconvert/audioadapter.c | 11 ++++++-----
|
||||
1 file changed, 6 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/spa/plugins/audioconvert/audioadapter.c b/spa/plugins/audioconvert/audioadapter.c
|
||||
index b7f80feca..34622a66c 100644
|
||||
--- a/spa/plugins/audioconvert/audioadapter.c
|
||||
+++ b/spa/plugins/audioconvert/audioadapter.c
|
||||
@@ -118,19 +118,20 @@ static int follower_enum_params(struct impl *this,
|
||||
struct spa_pod_builder *builder)
|
||||
{
|
||||
int res;
|
||||
- if (result->next < 0x10000) {
|
||||
+ if (result->next < 0x100000) {
|
||||
if ((res = spa_node_enum_params_sync(this->convert,
|
||||
id, &result->next, filter, &result->param, builder)) == 1)
|
||||
return res;
|
||||
- result->next = 0x10000;
|
||||
+ result->next = 0x100000;
|
||||
}
|
||||
- if (result->next >= 0x10000 && this->follower_params_flags[idx] & SPA_PARAM_INFO_READ) {
|
||||
- result->next &= 0xffff;
|
||||
+ if (result->next < 0x200000 && this->follower_params_flags[idx] & SPA_PARAM_INFO_READ) {
|
||||
+ result->next &= 0xfffff;
|
||||
if ((res = spa_node_enum_params_sync(this->follower,
|
||||
id, &result->next, filter, &result->param, builder)) == 1) {
|
||||
- result->next |= 0x10000;
|
||||
+ result->next |= 0x100000;
|
||||
return res;
|
||||
}
|
||||
+ result->next = 0x200000;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
--
|
||||
GitLab
|
||||
|
@ -1,57 +0,0 @@
|
||||
From 67dcc0d29120572048f71fd40ab924a01ddd42fa Mon Sep 17 00:00:00 2001
|
||||
From: Pauli Virtanen <pav@iki.fi>
|
||||
Date: Mon, 17 Jan 2022 19:10:14 +0200
|
||||
Subject: [PATCH] bluez5: don't create device if adapter is missing
|
||||
|
||||
BlueZ may be missing adapter information for devices in some cases.
|
||||
Ignore devices without specified adapter.
|
||||
---
|
||||
spa/plugins/bluez5/bluez5-dbus.c | 18 ++++++++++++++++++
|
||||
1 file changed, 18 insertions(+)
|
||||
|
||||
diff --git a/spa/plugins/bluez5/bluez5-dbus.c b/spa/plugins/bluez5/bluez5-dbus.c
|
||||
index 2b7f20162..f355b08d3 100644
|
||||
--- a/spa/plugins/bluez5/bluez5-dbus.c
|
||||
+++ b/spa/plugins/bluez5/bluez5-dbus.c
|
||||
@@ -1470,6 +1470,15 @@ static int device_update_props(struct spa_bt_device *device,
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static bool device_props_ready(struct spa_bt_device *device)
|
||||
+{
|
||||
+ /*
|
||||
+ * In some cases, BlueZ device props may be missing part of
|
||||
+ * the information required when the interface first appears.
|
||||
+ */
|
||||
+ return device->adapter && device->address;
|
||||
+}
|
||||
+
|
||||
bool spa_bt_device_supports_a2dp_codec(struct spa_bt_device *device, const struct a2dp_codec *codec)
|
||||
{
|
||||
struct spa_bt_monitor *monitor = device->monitor;
|
||||
@@ -3622,6 +3631,9 @@ static void interface_added(struct spa_bt_monitor *monitor,
|
||||
device_update_props(d, props_iter, NULL);
|
||||
d->reconnect_state = BT_DEVICE_RECONNECT_INIT;
|
||||
|
||||
+ if (!device_props_ready(d))
|
||||
+ return;
|
||||
+
|
||||
device_update_hw_volume_profiles(d);
|
||||
|
||||
/* Trigger bluez device creation before bluez profile negotiation started so that
|
||||
@@ -3978,6 +3990,12 @@ static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *m, void *us
|
||||
spa_log_debug(monitor->log, "Properties changed in device %s", path);
|
||||
|
||||
device_update_props(d, &it[1], NULL);
|
||||
+
|
||||
+ if (!device_props_ready(d))
|
||||
+ goto finish;
|
||||
+
|
||||
+ device_update_hw_volume_profiles(d);
|
||||
+
|
||||
spa_bt_device_add_profile(d, SPA_BT_PROFILE_NULL);
|
||||
}
|
||||
else if (spa_streq(iface, BLUEZ_MEDIA_ENDPOINT_INTERFACE)) {
|
||||
--
|
||||
GitLab
|
||||
|
@ -1,38 +0,0 @@
|
||||
From 140c8d0cd95523815d42dbca10ef9457780f6636 Mon Sep 17 00:00:00 2001
|
||||
From: Wim Taymans <wtaymans@redhat.com>
|
||||
Date: Tue, 11 Jan 2022 21:33:35 +0100
|
||||
Subject: [PATCH] bluez5: handle missing device and adapter in quirks
|
||||
|
||||
When the device or adapter is NULL, skip the quirk checks instead of
|
||||
crashing.
|
||||
|
||||
Fixes https://gitlab.freedesktop.org/pipewire/wireplumber/-/issues/155
|
||||
---
|
||||
spa/plugins/bluez5/quirks.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/spa/plugins/bluez5/quirks.c b/spa/plugins/bluez5/quirks.c
|
||||
index 217bb61f6..16a8ebaa9 100644
|
||||
--- a/spa/plugins/bluez5/quirks.c
|
||||
+++ b/spa/plugins/bluez5/quirks.c
|
||||
@@ -332,7 +332,7 @@ int spa_bt_quirks_get_features(const struct spa_bt_quirks *this,
|
||||
}
|
||||
|
||||
/* Adapter */
|
||||
- if (this->adapter_rules) {
|
||||
+ if (this->adapter_rules && adapter) {
|
||||
uint32_t no_features = 0;
|
||||
int nitems = 0;
|
||||
char vendor_id[64], product_id[64], address[64];
|
||||
@@ -357,7 +357,7 @@ int spa_bt_quirks_get_features(const struct spa_bt_quirks *this,
|
||||
}
|
||||
|
||||
/* Device */
|
||||
- if (this->device_rules) {
|
||||
+ if (this->device_rules && device) {
|
||||
uint32_t no_features = 0;
|
||||
int nitems = 0;
|
||||
char vendor_id[64], product_id[64], version_id[64], address[64];
|
||||
--
|
||||
GitLab
|
||||
|
@ -1,40 +0,0 @@
|
||||
From 2b102a1046630b072d80e36c872e2aa4e28052ca Mon Sep 17 00:00:00 2001
|
||||
From: Wim Taymans <wtaymans@redhat.com>
|
||||
Date: Fri, 7 Jan 2022 17:12:43 +0100
|
||||
Subject: [PATCH] jack: remember last return from jack_get_buffer_size
|
||||
|
||||
Remember what we last returned from jack_get_buffer_size and only
|
||||
emit a buffersize change event when somwthing new is configured.
|
||||
|
||||
Fixes startup of jconvolver.
|
||||
|
||||
Fixes #1989
|
||||
---
|
||||
pipewire-jack/src/pipewire-jack.c | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/pipewire-jack/src/pipewire-jack.c b/pipewire-jack/src/pipewire-jack.c
|
||||
index 595d786f6..f338d2469 100644
|
||||
--- a/pipewire-jack/src/pipewire-jack.c
|
||||
+++ b/pipewire-jack/src/pipewire-jack.c
|
||||
@@ -1227,7 +1227,8 @@ do_buffer_frames(struct spa_loop *loop,
|
||||
{
|
||||
uint32_t buffer_frames = *((uint32_t*)data);
|
||||
struct client *c = user_data;
|
||||
- do_callback_expr(c, c->buffer_frames = buffer_frames, bufsize_callback, buffer_frames, c->bufsize_arg);
|
||||
+ if (c->buffer_frames != buffer_frames)
|
||||
+ do_callback_expr(c, c->buffer_frames = buffer_frames, bufsize_callback, buffer_frames, c->bufsize_arg);
|
||||
recompute_latencies(c);
|
||||
return 0;
|
||||
}
|
||||
@@ -3985,6 +3986,7 @@ jack_nframes_t jack_get_buffer_size (jack_client_t *client)
|
||||
res = c->position->clock.duration;
|
||||
}
|
||||
}
|
||||
+ c->buffer_frames = res;
|
||||
pw_log_debug("buffer_frames: %u", res);
|
||||
return res;
|
||||
}
|
||||
--
|
||||
GitLab
|
||||
|
@ -1,27 +0,0 @@
|
||||
From 6ece5d810ce7090be07d22808f48caef96cb790d Mon Sep 17 00:00:00 2001
|
||||
From: Wim Taymans <wtaymans@redhat.com>
|
||||
Date: Tue, 18 Jan 2022 20:03:01 +0100
|
||||
Subject: [PATCH] loop: invoke immediately when loop is not running
|
||||
|
||||
Or else we might never get our callback called or worse, block forever,
|
||||
waiting for the response.
|
||||
---
|
||||
spa/plugins/support/loop.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/spa/plugins/support/loop.c b/spa/plugins/support/loop.c
|
||||
index 94f4b321f..c8bcc5b08 100644
|
||||
--- a/spa/plugins/support/loop.c
|
||||
+++ b/spa/plugins/support/loop.c
|
||||
@@ -187,7 +187,7 @@ loop_invoke(void *object,
|
||||
int32_t filled;
|
||||
uint32_t avail, idx, offset, l0;
|
||||
|
||||
- if (pthread_equal(impl->thread, pthread_self()))
|
||||
+ if (impl->thread == 0 || pthread_equal(impl->thread, pthread_self()))
|
||||
return loop_invoke_inthread(impl, func, seq, data, size, block, user_data);
|
||||
|
||||
filled = spa_ringbuffer_get_write_index(&impl->buffer, &idx);
|
||||
--
|
||||
GitLab
|
||||
|
@ -1,28 +0,0 @@
|
||||
From dec7f7a608fc2f8aac1338d398ae30ba5a592e64 Mon Sep 17 00:00:00 2001
|
||||
From: Wim Taymans <wtaymans@redhat.com>
|
||||
Date: Mon, 17 Jan 2022 16:28:06 +0100
|
||||
Subject: [PATCH] merger: also reconfigure when monitor changes
|
||||
|
||||
So that monitor ports are added/removed.
|
||||
---
|
||||
spa/plugins/audioconvert/merger.c | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/spa/plugins/audioconvert/merger.c b/spa/plugins/audioconvert/merger.c
|
||||
index 9ebf040e9..c0b979997 100644
|
||||
--- a/spa/plugins/audioconvert/merger.c
|
||||
+++ b/spa/plugins/audioconvert/merger.c
|
||||
@@ -624,7 +624,9 @@ static int impl_node_set_param(void *object, uint32_t id, uint32_t flags,
|
||||
|
||||
info.info.raw.rate = 0;
|
||||
|
||||
- if (this->have_profile && memcmp(&this->format, &info, sizeof(info)) == 0)
|
||||
+ if (this->have_profile &&
|
||||
+ memcmp(&this->format, &info, sizeof(info)) == 0 &&
|
||||
+ this->monitor == monitor)
|
||||
return 0;
|
||||
|
||||
spa_log_debug(this->log, "%p: port config %d/%d %d", this,
|
||||
--
|
||||
GitLab
|
||||
|
@ -1,57 +0,0 @@
|
||||
From 9eddd0474f55c4dda713511a14a1e15a4b4c685e Mon Sep 17 00:00:00 2001
|
||||
From: Pauli Virtanen <pav@iki.fi>
|
||||
Date: Thu, 6 Jan 2022 21:27:40 +0200
|
||||
Subject: [PATCH] pulse-server: show monitor sources with device.class=monitor
|
||||
|
||||
Pulseaudio shows monitors with device.class=monitor, so we follow.
|
||||
---
|
||||
.../module-protocol-pulse/pulse-server.c | 25 ++++++++++++++++++-
|
||||
1 file changed, 24 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/modules/module-protocol-pulse/pulse-server.c b/src/modules/module-protocol-pulse/pulse-server.c
|
||||
index 9747e5ae9..d0ebaeefd 100644
|
||||
--- a/src/modules/module-protocol-pulse/pulse-server.c
|
||||
+++ b/src/modules/module-protocol-pulse/pulse-server.c
|
||||
@@ -3670,6 +3670,27 @@ static int fill_sink_info(struct client *client, struct message *m,
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static int fill_source_info_proplist(struct message *m, struct pw_manager_object *o,
|
||||
+ struct pw_node_info *info)
|
||||
+{
|
||||
+ struct pw_properties *props = NULL;
|
||||
+ struct spa_dict *props_dict = info->props;
|
||||
+
|
||||
+ if (pw_manager_object_is_monitor(o)) {
|
||||
+ props = pw_properties_new_dict(info->props);
|
||||
+ if (props == NULL)
|
||||
+ return -ENOMEM;
|
||||
+
|
||||
+ pw_properties_set(props, PW_KEY_DEVICE_CLASS, "monitor");
|
||||
+ props_dict = &props->dict;
|
||||
+ }
|
||||
+
|
||||
+ message_put(m, TAG_PROPLIST, props_dict, TAG_INVALID);
|
||||
+ pw_properties_free(props);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static int fill_source_info(struct client *client, struct message *m,
|
||||
struct pw_manager_object *o)
|
||||
{
|
||||
@@ -3762,8 +3783,10 @@ static int fill_source_info(struct client *client, struct message *m,
|
||||
TAG_INVALID);
|
||||
|
||||
if (client->version >= 13) {
|
||||
+ int res;
|
||||
+ if ((res = fill_source_info_proplist(m, o, info)) < 0)
|
||||
+ return res;
|
||||
message_put(m,
|
||||
- TAG_PROPLIST, info->props,
|
||||
TAG_USEC, 0LL, /* requested latency */
|
||||
TAG_INVALID);
|
||||
}
|
||||
--
|
||||
GitLab
|
||||
|
@ -1,26 +0,0 @@
|
||||
From a8bafa063137c78cd191837598fae3c6c6392b68 Mon Sep 17 00:00:00 2001
|
||||
From: Wim Taymans <wtaymans@redhat.com>
|
||||
Date: Tue, 18 Jan 2022 12:41:17 +0100
|
||||
Subject: [PATCH] pw-metadata: handle NULL props from metadata object
|
||||
|
||||
---
|
||||
src/tools/pw-metadata.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/tools/pw-metadata.c b/src/tools/pw-metadata.c
|
||||
index 97fda6744..e0aca1366 100644
|
||||
--- a/src/tools/pw-metadata.c
|
||||
+++ b/src/tools/pw-metadata.c
|
||||
@@ -96,7 +96,8 @@ static void registry_event_global(void *data, uint32_t id, uint32_t permissions,
|
||||
if (!spa_streq(type, PW_TYPE_INTERFACE_Metadata))
|
||||
return;
|
||||
|
||||
- if ((str = spa_dict_lookup(props, PW_KEY_METADATA_NAME)) != NULL &&
|
||||
+ if (props != NULL &&
|
||||
+ (str = spa_dict_lookup(props, PW_KEY_METADATA_NAME)) != NULL &&
|
||||
!spa_streq(str, d->opt_name))
|
||||
return;
|
||||
|
||||
--
|
||||
GitLab
|
||||
|
@ -1,44 +0,0 @@
|
||||
From 8e3eaf79528006ed7940a525aab343b3812e8b19 Mon Sep 17 00:00:00 2001
|
||||
From: Wim Taymans <wtaymans@redhat.com>
|
||||
Date: Wed, 12 Jan 2022 10:08:40 +0100
|
||||
Subject: [PATCH] raop: fix errno check
|
||||
|
||||
---
|
||||
src/modules/module-raop/rtsp-client.c | 12 ++++++++----
|
||||
1 file changed, 8 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/src/modules/module-raop/rtsp-client.c b/src/modules/module-raop/rtsp-client.c
|
||||
index c1740ea5f..9bb888773 100644
|
||||
--- a/src/modules/module-raop/rtsp-client.c
|
||||
+++ b/src/modules/module-raop/rtsp-client.c
|
||||
@@ -203,9 +203,12 @@ static int read_line(struct pw_rtsp_client *client, char **buf)
|
||||
if (res == 0)
|
||||
return -EPIPE;
|
||||
if (res < 0) {
|
||||
- if (res == EAGAIN)
|
||||
- return 0;
|
||||
- return -errno;
|
||||
+ res = -errno;
|
||||
+ if (res == -EINTR)
|
||||
+ continue;
|
||||
+ if (res != -EAGAIN && res != -EWOULDBLOCK)
|
||||
+ return res;
|
||||
+ return 0;
|
||||
}
|
||||
if (c == '\n') {
|
||||
client->line_buf[client->line_pos] = '\0';
|
||||
@@ -435,9 +438,10 @@ int pw_rtsp_client_connect(struct pw_rtsp_client *client,
|
||||
true, on_source_io, client);
|
||||
|
||||
if (client->source == NULL) {
|
||||
+ res = -errno;
|
||||
pw_log_error("%p: source create failed: %m", client);
|
||||
close(fd);
|
||||
- return -errno;
|
||||
+ return res;
|
||||
}
|
||||
client->connecting = true;
|
||||
free(client->session_id);
|
||||
--
|
||||
GitLab
|
||||
|
2
_service
2
_service
@ -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.43</param>
|
||||
<param name="revision">refs/tags/0.3.44</param>
|
||||
<param name="versionformat">@PARENT_TAG@</param>
|
||||
<!-- <param name="revision">master</param>
|
||||
<param name="versionformat">@PARENT_TAG@+git%cd.%h</param>
|
||||
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:d507565f238e2cca879af791b952617af76ee3b94ef70bfa403cbc028dec558e
|
||||
size 10307597
|
3
pipewire-0.3.44.obscpio
Normal file
3
pipewire-0.3.44.obscpio
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:f7eb915ec772f6c3d1ad7c5e68ee0ca375d62a0a49d69afcfdf3b84cc5566ce2
|
||||
size 10391053
|
150
pipewire.changes
150
pipewire.changes
@ -1,3 +1,153 @@
|
||||
-------------------------------------------------------------------
|
||||
Thu Jan 27 10:45:39 UTC 2022 - Alexei Sorokin <sor.alexei@meowr.ru>
|
||||
|
||||
- Update to version 0.3.44:
|
||||
* Highlights:
|
||||
- It is now possible to run a minimal PipeWire server without a
|
||||
session manager, enough to run JACK clients.
|
||||
- The maximum buffer size is now configurable and can be larger
|
||||
than the previously hardcoded limit of 8192 samples.
|
||||
When using high sample rates, the larger buffer size can
|
||||
avoid xruns.
|
||||
- The default maximum latency was reduced from 170ms to 42ms.
|
||||
This should improve overall latency for application that ask
|
||||
for a large latency, such as notifications.
|
||||
- Better JACK compatibility. Patchbays should now get less
|
||||
confused about ports appearing and disappearing.
|
||||
- Fix some bluetooth crashes.
|
||||
- Fix some races in ALSA device detection.
|
||||
- Many bug fixes and improvements all over the place.
|
||||
* PipeWire:
|
||||
- Bump the meson requirement to 0.59.0.
|
||||
- pw-top now reports correct times for filter-chain and
|
||||
loopback.
|
||||
- max-quantum is now also scaled with the rate. A new
|
||||
quantum-limit property was added as a hard limit for the
|
||||
quantum. This makes it possible to configure for larger than
|
||||
8192 buffer sizes. Note than many JACK applications have a
|
||||
hardcoded 8192 limit.
|
||||
- The max-quantum was reduced to 2048, This gives a 42ms
|
||||
default latency.
|
||||
- pw-filter can now return a NULL buffer from _get_dsp_buffer()
|
||||
- Add a PIPEWIRE_RATE and PIPEWIRE_QUANTUM env variable to set
|
||||
the graph rate and the graph quantum and rate respectively.
|
||||
- Fix a potential file descriptor leak in the connection.
|
||||
- A new minimal.conf file was added to demonstrate a static
|
||||
setup of a daemon that doesn't require a session manager and
|
||||
is able to run JACK applicaions.
|
||||
- Nice levels are now only changed on the servers, not the
|
||||
clients.
|
||||
- Add an option to suspend nodes when idle.
|
||||
- Make it possible to avoid quantum and rate changes with
|
||||
pw-metadata. This is essential in a locked down system.
|
||||
- Handle mixer port errors better and fail to create the link
|
||||
instead of silently not working.
|
||||
- Nodes that are moved to a driver now have all the linked
|
||||
nodes moved as well. This makes it possible to run some
|
||||
graphs without a driver, such as paplay -> zita-j2n.
|
||||
- pw-cli and pw-dump can now also list objects by name, serial
|
||||
and object.path using glob style pattern matching.
|
||||
* modules:
|
||||
- filter-chain can now also configure parameters by index.
|
||||
- Fix the client name of module-protocol-simple.
|
||||
- module-rtkit was merged into module-rt. This makes it easier
|
||||
to ship a default config that works on more systems by
|
||||
default.
|
||||
- module-adapter can now configure the adapter node from the
|
||||
config. Previously, this was a task only performed by the
|
||||
session manager.
|
||||
- module-metadata can now also create metadata object from the
|
||||
config file.
|
||||
- The ROC module should now work again.
|
||||
- An X11-bell module was added to handle X11 bell events.
|
||||
- filter-chain and loopback modules now have better unique
|
||||
default names for the streams, which makes it possible to
|
||||
save and restore their volumes independently.
|
||||
- module-echo-cancel now has properties to control the delay
|
||||
and buffer size.
|
||||
* ALSA:
|
||||
- The monitor names are now correctly parsed.
|
||||
- The default period size for batch devices is limited now to
|
||||
avoid large latency.
|
||||
- The unused min/max-latency properties were removed.
|
||||
- Internal latency is now also configurable with params at
|
||||
runtime.
|
||||
- The udev rule for TI2902 was removed because it causes
|
||||
problems.
|
||||
- Fix a race where some devices would sometimes be missing.
|
||||
- Add some more timeouts to work around a race in udev device
|
||||
permission changes when switching VTs.
|
||||
* SPA:
|
||||
- Fix potential infinite loop in audioconvert.
|
||||
- The spa-resample tools can now also use optimised
|
||||
implementations.
|
||||
- Fix a potential crash in resampler.
|
||||
- audioconvert can now also handle F64 formats.
|
||||
- The channelmixer now does normalization by default to avoid
|
||||
clipping when downmixing is active.
|
||||
- The channelmixer will now generate LFE channels when the
|
||||
lfe_cutoff frequency is set, even when upmix is disabled.
|
||||
- The channelmixer will now always generate FC when the target
|
||||
has it.
|
||||
- Adapter now reports latency correctly, even after linking the
|
||||
monitor ports.
|
||||
- Reduce memory usage and preallocated memory in some of the
|
||||
audioconvert nodes.
|
||||
- Many properties are now exposed in adapter, such as the
|
||||
resample quality.
|
||||
- The resampler and channelmixer can now be disabled.
|
||||
* V4L2:
|
||||
- pw-v4l2 now also works for ffplay.
|
||||
- Take product names from udev now that the kernel returns
|
||||
generic name.
|
||||
* JACK:
|
||||
- The jack pkgconfig file now has the
|
||||
jack_implementation=pipewire variable to be able to
|
||||
distinguish jack implementations.
|
||||
- jconvolver now starts correctly again.
|
||||
- The object.serial is now used for the port_id. This makes it
|
||||
easier to track old objects in the cache.
|
||||
- Add a dummy jacknet implementation.
|
||||
- A bug in the port allocation was fixed that would make it
|
||||
impossible to allocate ports at some point.
|
||||
* Bluetooth:
|
||||
- Bluetooth profiles are now saved properly by the
|
||||
session manager.
|
||||
- Improved profile detections, increased timeouts for slow
|
||||
devices.
|
||||
- Implement HFP call indicator for improved compatibility.
|
||||
- Handle the case where bluez does not set the adapter or
|
||||
address properties on the device instead of crashing.
|
||||
- Improved support for setting the profile from the
|
||||
session manager.
|
||||
* pulse-server:
|
||||
- Monitor sources now have the device.class=monitor for better
|
||||
compatibility.
|
||||
- Behaviour after seeking is improved. The algorithm for
|
||||
requesting bytes from the client was simplified and improved.
|
||||
- module-ladspa-sink implements the control argument now.
|
||||
- A potential memory leak in the message queue was fixed.
|
||||
- Use the object.serial for the pulseaudio object index. The
|
||||
index is not supposed to be reused and this would cause
|
||||
problems with some clients.
|
||||
- Servers should now again be able to listen in IPv4.
|
||||
- module-x11-bell was added.
|
||||
- There is now support for per-application quirks and
|
||||
properties in the pipewire-pulse.conf file. Per-application
|
||||
latency and buffering properties can also be configured.
|
||||
- Fix a regression in telegram sounds not playing.
|
||||
- Drop patches already included upstream:
|
||||
* 0001-alsa-improve-rate-selection.patch
|
||||
* 0001-audioconvert-avoid-infinite-loop.patch
|
||||
* 0001-bluez5-dont-create-device-if-adapter-is-missing.patch
|
||||
* 0001-bluez5-handle-missing-device-and-adapter-in-quirks.patch
|
||||
* 0001-jack-remember-last-return-from-jack_get_buffer_size.patch
|
||||
* 0001-loop-invoke-immediately-when-loop-is-not-running.patch
|
||||
* 0001-merger-also-reconfigure-when-monitor-changes.patch
|
||||
* 0001-pulse-server-show-monitor-sources-with-device_class_monitor.patch
|
||||
* 0001-pw-metadata-handle-NULL-props-from-metadata-object.patch
|
||||
* 0001-raop-fix-errno-check.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Jan 19 16:49:42 UTC 2022 - Antonio Larrosa <alarrosa@suse.com>
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
name: pipewire
|
||||
version: 0.3.43
|
||||
mtime: 1641378304
|
||||
commit: 07724b7aefa8a23a016727b53f4e426ecd63d248
|
||||
version: 0.3.44
|
||||
mtime: 1643275073
|
||||
commit: c4ca245b24071c33b1d131e131cf1ebc5fb64f2e
|
||||
|
@ -53,7 +53,7 @@
|
||||
%endif
|
||||
|
||||
Name: pipewire
|
||||
Version: 0.3.43
|
||||
Version: 0.3.44
|
||||
Release: 0
|
||||
Summary: A Multimedia Framework designed to be an audio and video server and more
|
||||
License: MIT
|
||||
@ -61,16 +61,6 @@ Group: Development/Libraries/C and C++
|
||||
URL: https://pipewire.org/
|
||||
Source0: %{name}-%{version}.tar.xz
|
||||
Source99: baselibs.conf
|
||||
Patch0: 0001-audioconvert-avoid-infinite-loop.patch
|
||||
Patch1: 0001-bluez5-handle-missing-device-and-adapter-in-quirks.patch
|
||||
Patch2: 0001-jack-remember-last-return-from-jack_get_buffer_size.patch
|
||||
Patch3: 0001-pulse-server-show-monitor-sources-with-device_class_monitor.patch
|
||||
Patch4: 0001-raop-fix-errno-check.patch
|
||||
Patch5: 0001-bluez5-dont-create-device-if-adapter-is-missing.patch
|
||||
Patch6: 0001-loop-invoke-immediately-when-loop-is-not-running.patch
|
||||
Patch7: 0001-merger-also-reconfigure-when-monitor-changes.patch
|
||||
Patch8: 0001-pw-metadata-handle-NULL-props-from-metadata-object.patch
|
||||
Patch9: 0001-alsa-improve-rate-selection.patch
|
||||
BuildRequires: docutils
|
||||
BuildRequires: doxygen
|
||||
BuildRequires: fdupes
|
||||
@ -80,7 +70,7 @@ BuildRequires: gcc9-c++
|
||||
%endif
|
||||
BuildRequires: gcc-c++
|
||||
BuildRequires: graphviz
|
||||
BuildRequires: meson >= 0.56.0
|
||||
BuildRequires: meson >= 0.59.0
|
||||
BuildRequires: pkgconfig
|
||||
BuildRequires: systemd-rpm-macros
|
||||
BuildRequires: pkgconfig(alsa) >= 1.1.7
|
||||
@ -117,6 +107,7 @@ BuildRequires: pkgconfig(libavformat)
|
||||
BuildRequires: pkgconfig(libfreeaptx)
|
||||
%endif
|
||||
BuildRequires: readline-devel
|
||||
BuildRequires: pkgconfig(libcanberra)
|
||||
BuildRequires: pkgconfig(libdrm)
|
||||
BuildRequires: pkgconfig(libpulse)
|
||||
BuildRequires: pkgconfig(libsystemd)
|
||||
@ -533,6 +524,7 @@ fi
|
||||
%{_udevrulesdir}/90-pipewire-alsa.rules
|
||||
%{_datadir}/pipewire/client.conf
|
||||
%{_datadir}/pipewire/client-rt.conf
|
||||
%{_datadir}/pipewire/minimal.conf
|
||||
|
||||
%files spa-plugins-%{spa_ver_str}
|
||||
%dir %{_libdir}/spa-%{spa_ver}/
|
||||
|
Loading…
x
Reference in New Issue
Block a user