spa: device: Commands for (external) volume control

This commit is contained in:
Arun Raghavan 2026-03-03 15:44:22 -08:00 committed by Julian Bouzas
parent 8527b40060
commit c81c66826e
2 changed files with 19 additions and 0 deletions

View file

@ -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,
};

View file

@ -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 },
};