pipewire/0009-bluez5-volumes-need-to-be-distributed-to-all-channel.patch
DistroBaker 3e5aaf49ce 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#4467dc0ac39ed04eb0f686004dcd8e66555c6ad6
2021-02-22 09:10:22 +00:00

38 lines
1.2 KiB
Diff

From 8c5ca000ef7fddd9be9cd2211d880736e97b956d Mon Sep 17 00:00:00 2001
From: Wim Taymans <wtaymans@redhat.com>
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