From 15f8b7aa4ab87ea8d7d6604fd7201fe4090e1358 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Wed, 28 Oct 2020 10:52:35 +0100 Subject: [PATCH] pulse-server: parse HARDWARE props --- src/modules/module-protocol-pulse/volume.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/modules/module-protocol-pulse/volume.c b/src/modules/module-protocol-pulse/volume.c index 641785af2..857796a66 100644 --- a/src/modules/module-protocol-pulse/volume.c +++ b/src/modules/module-protocol-pulse/volume.c @@ -39,6 +39,9 @@ struct volume_info { float level; float base; uint32_t steps; +#define VOLUME_HW_VOLUME (1<<0) +#define VOLUME_HW_MUTE (1<<1) + uint32_t flags; }; #define VOLUME_INFO_INIT (struct volume_info) { \ @@ -59,13 +62,20 @@ static int volume_parse_param(const struct spa_pod *param, struct volume_info *i switch (prop->key) { case SPA_PROP_volume: spa_pod_get_float(&prop->value, &info->level); + SPA_FLAG_UPDATE(info->flags, VOLUME_HW_VOLUME, + prop->flags & SPA_POD_PROP_FLAG_HARDWARE); + break; case SPA_PROP_mute: spa_pod_get_bool(&prop->value, &info->mute); + SPA_FLAG_UPDATE(info->flags, VOLUME_HW_MUTE, + prop->flags & SPA_POD_PROP_FLAG_HARDWARE); break; case SPA_PROP_channelVolumes: info->volume.channels = spa_pod_copy_array(&prop->value, SPA_TYPE_Float, info->volume.values, SPA_AUDIO_MAX_CHANNELS); + SPA_FLAG_UPDATE(info->flags, VOLUME_HW_VOLUME, + prop->flags & SPA_POD_PROP_FLAG_HARDWARE); break; case SPA_PROP_volumeBase: spa_pod_get_float(&prop->value, &info->base);