mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-03 09:01:50 -05:00
alsa-ucm: Support Playback/CaptureVolume
This allows us to support the PlaybackVolume and CaptureVolume commands in UCM, specifying a mixer control to use for hardware volume control. This only works with ports corresponding to single devices at the moment, and doesn't support stacking controls for combination ports. The configuration is intended to provide a control (like Headphone Playback Volume), but we try to resolve to a simple mixer control (Headphone) to reuse existing volume paths. On the UCM side, this also requires that when disabling the device for the port, the volume should be reset to some default. When enabling/disabling combination devices, things are a bit iffy since we have no way to reset the volume before switching to a combination device. It would be nice to have a combination-transition-sequence command in UCM to handle this and other similar cases. PlaybackSwitch and CaptureSwitch are yet to be implemented.
This commit is contained in:
parent
1c240b7a12
commit
3dfccada46
7 changed files with 295 additions and 66 deletions
|
|
@ -241,7 +241,7 @@ static int card_set_profile(pa_card *c, pa_card_profile *new_profile) {
|
|||
|
||||
/* if UCM is available for this card then update the verb */
|
||||
if (u->use_ucm) {
|
||||
if (pa_alsa_ucm_set_profile(&u->ucm, nd->profile ? nd->profile->name : NULL,
|
||||
if (pa_alsa_ucm_set_profile(&u->ucm, c, nd->profile ? nd->profile->name : NULL,
|
||||
od->profile ? od->profile->name : NULL) < 0) {
|
||||
ret = -1;
|
||||
goto finish;
|
||||
|
|
@ -294,7 +294,7 @@ static void init_profile(struct userdata *u) {
|
|||
|
||||
if (d->profile && u->use_ucm) {
|
||||
/* Set initial verb */
|
||||
if (pa_alsa_ucm_set_profile(ucm, d->profile->name, NULL) < 0) {
|
||||
if (pa_alsa_ucm_set_profile(ucm, u->card, d->profile->name, NULL) < 0) {
|
||||
pa_log("Failed to set ucm profile %s", d->profile->name);
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue