From c81c66826e15175b05f33c40e5df4ce953b675ce Mon Sep 17 00:00:00 2001 From: Arun Raghavan Date: Tue, 3 Mar 2026 15:44:22 -0800 Subject: [PATCH] spa: device: Commands for (external) volume control --- spa/include/spa/monitor/device.h | 11 +++++++++++ spa/include/spa/monitor/type-info.h | 8 ++++++++ 2 files changed, 19 insertions(+) diff --git a/spa/include/spa/monitor/device.h b/spa/include/spa/monitor/device.h index 57c84a963..d3bfc310d 100644 --- a/spa/include/spa/monitor/device.h +++ b/spa/include/spa/monitor/device.h @@ -133,6 +133,9 @@ struct spa_device_events { /* object id of SPA_TYPE_COMMAND_Device */ enum spa_device_commands { SPA_DEVICE_COMMAND_User, + SPA_DEVICE_COMMAND_VolumeControl, /**< Volume control for devices which do not + * support standard volume control via route + * props */ }; #define SPA_DEVICE_COMMAND_ID(cmd) SPA_COMMAND_ID(cmd, SPA_TYPE_COMMAND_Device) @@ -146,6 +149,14 @@ enum spa_command_device { SPA_COMMAND_DEVICE_START_User = 0x1000, SPA_COMMAND_DEVICE_extra, /** extra info (String) */ + SPA_COMMAND_DEVICE_START_VolumeControl = 0x2000, + SPA_COMMAND_DEVICE_volumeUp, /** Send a volume up command. route id (Id) */ + SPA_COMMAND_DEVICE_volumeDown, /** Send a volume down command. route id (Id) */ + SPA_COMMAND_DEVICE_muteToggle, /** Send a mute toggle command. route id (Id) */ + SPA_COMMAND_DEVICE_updateCapabilities, /** Updates capabilities. capabilities value (Int) */ + SPA_COMMAND_DEVICE_updateVolume, /** Updates volume. route id and volume value (OBJECT_Props) */ + SPA_COMMAND_DEVICE_updateMute, /** Updates mute. route id and mute value (OBJECT_Props) */ + SPA_COMMAND_DEVICE_START_CUSTOM = 0x1000000, }; diff --git a/spa/include/spa/monitor/type-info.h b/spa/include/spa/monitor/type-info.h index f7c66799c..0bb79fb28 100644 --- a/spa/include/spa/monitor/type-info.h +++ b/spa/include/spa/monitor/type-info.h @@ -42,6 +42,7 @@ static const struct spa_type_info spa_type_device_event[] = { static const struct spa_type_info spa_type_device_command_id[] = { { SPA_DEVICE_COMMAND_User, SPA_TYPE_COMMAND_Device, SPA_TYPE_INFO_DEVICE_COMMAND_BASE "User", NULL }, + { SPA_DEVICE_COMMAND_VolumeControl, SPA_TYPE_COMMAND_Device, SPA_TYPE_INFO_DEVICE_COMMAND_BASE "VolumeControl", NULL }, { 0, 0, NULL, NULL }, }; @@ -50,6 +51,13 @@ static const struct spa_type_info spa_type_device_command[] = { { SPA_COMMAND_DEVICE_extra, SPA_TYPE_String, SPA_TYPE_INFO_DEVICE_COMMAND_BASE "extra", NULL }, + { SPA_COMMAND_DEVICE_volumeUp, SPA_TYPE_Id, SPA_TYPE_INFO_DEVICE_COMMAND_BASE "volumeUp", NULL }, + { SPA_COMMAND_DEVICE_volumeDown, SPA_TYPE_Id, SPA_TYPE_INFO_DEVICE_COMMAND_BASE "volumeDown", NULL }, + { SPA_COMMAND_DEVICE_muteToggle, SPA_TYPE_Id, SPA_TYPE_INFO_DEVICE_COMMAND_BASE "muteToggle", NULL }, + { SPA_COMMAND_DEVICE_updateCapabilities, SPA_TYPE_Int, SPA_TYPE_INFO_DEVICE_COMMAND_BASE "updateCapabilities", NULL }, + { SPA_COMMAND_DEVICE_updateVolume, SPA_TYPE_OBJECT_Props, SPA_TYPE_INFO_DEVICE_COMMAND_BASE "updateVolume", NULL }, + { SPA_COMMAND_DEVICE_updateMute, SPA_TYPE_OBJECT_Props, SPA_TYPE_INFO_DEVICE_COMMAND_BASE "updateMute", NULL }, + { 0, 0, NULL, NULL }, };