mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-04 13:29:59 -05:00
ucm: Add support for "JackControl"
JackControl is used to indicate the kcontrol name for jack detection.
This commit is contained in:
parent
80791ceb5a
commit
85f5d93306
2 changed files with 23 additions and 5 deletions
|
|
@ -90,6 +90,7 @@ static struct ucm_items item[] = {
|
||||||
{"CaptureRate", PA_ALSA_PROP_UCM_CAPTURE_RATE},
|
{"CaptureRate", PA_ALSA_PROP_UCM_CAPTURE_RATE},
|
||||||
{"CaptureChannels", PA_ALSA_PROP_UCM_CAPTURE_CHANNELS},
|
{"CaptureChannels", PA_ALSA_PROP_UCM_CAPTURE_CHANNELS},
|
||||||
{"TQ", PA_ALSA_PROP_UCM_QOS},
|
{"TQ", PA_ALSA_PROP_UCM_QOS},
|
||||||
|
{"JackControl", PA_ALSA_PROP_UCM_JACK_CONTROL},
|
||||||
{NULL, NULL},
|
{NULL, NULL},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -1262,9 +1263,18 @@ static int ucm_create_mapping(
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static pa_alsa_jack* ucm_get_jack(pa_alsa_ucm_config *ucm, const char *dev_name, const char *pre_tag) {
|
static pa_alsa_jack* ucm_get_jack(pa_alsa_ucm_config *ucm, pa_alsa_ucm_device *device, const char *pre_tag) {
|
||||||
pa_alsa_jack *j;
|
pa_alsa_jack *j;
|
||||||
char *name = pa_sprintf_malloc("%s%s", pre_tag, dev_name);
|
const char *device_name;
|
||||||
|
char *name;
|
||||||
|
const char *jack_control;
|
||||||
|
|
||||||
|
pa_assert(ucm);
|
||||||
|
pa_assert(device);
|
||||||
|
pa_assert(pre_tag);
|
||||||
|
|
||||||
|
device_name = pa_proplist_gets(device->proplist, PA_ALSA_PROP_UCM_NAME);
|
||||||
|
name = pa_sprintf_malloc("%s%s", pre_tag, device_name);
|
||||||
|
|
||||||
PA_LLIST_FOREACH(j, ucm->jacks)
|
PA_LLIST_FOREACH(j, ucm->jacks)
|
||||||
if (pa_streq(j->name, name))
|
if (pa_streq(j->name, name))
|
||||||
|
|
@ -1274,7 +1284,12 @@ static pa_alsa_jack* ucm_get_jack(pa_alsa_ucm_config *ucm, const char *dev_name,
|
||||||
j->state_unplugged = PA_AVAILABLE_NO;
|
j->state_unplugged = PA_AVAILABLE_NO;
|
||||||
j->state_plugged = PA_AVAILABLE_YES;
|
j->state_plugged = PA_AVAILABLE_YES;
|
||||||
j->name = pa_xstrdup(name);
|
j->name = pa_xstrdup(name);
|
||||||
j->alsa_name = pa_sprintf_malloc("%s Jack", dev_name);
|
|
||||||
|
jack_control = pa_proplist_gets(device->proplist, PA_ALSA_PROP_UCM_JACK_CONTROL);
|
||||||
|
if (jack_control)
|
||||||
|
j->alsa_name = pa_xstrdup(jack_control);
|
||||||
|
else
|
||||||
|
j->alsa_name = pa_sprintf_malloc("%s Jack", device_name);
|
||||||
|
|
||||||
PA_LLIST_PREPEND(pa_alsa_jack, ucm->jacks, j);
|
PA_LLIST_PREPEND(pa_alsa_jack, ucm->jacks, j);
|
||||||
|
|
||||||
|
|
@ -1343,9 +1358,9 @@ static int ucm_create_profile(
|
||||||
ucm_create_mapping(ucm, ps, p, dev, verb_name, name, sink, source);
|
ucm_create_mapping(ucm, ps, p, dev, verb_name, name, sink, source);
|
||||||
|
|
||||||
if (sink)
|
if (sink)
|
||||||
dev->output_jack = ucm_get_jack(ucm, name, PA_UCM_PRE_TAG_OUTPUT);
|
dev->output_jack = ucm_get_jack(ucm, dev, PA_UCM_PRE_TAG_OUTPUT);
|
||||||
if (source)
|
if (source)
|
||||||
dev->input_jack = ucm_get_jack(ucm, name, PA_UCM_PRE_TAG_INPUT);
|
dev->input_jack = ucm_get_jack(ucm, dev, PA_UCM_PRE_TAG_INPUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Now find modifiers that have their own PlaybackPCM and create
|
/* Now find modifiers that have their own PlaybackPCM and create
|
||||||
|
|
|
||||||
|
|
@ -84,6 +84,9 @@ typedef void snd_use_case_mgr_t;
|
||||||
/** For devices: The modifier (if any) that this device corresponds to */
|
/** For devices: The modifier (if any) that this device corresponds to */
|
||||||
#define PA_ALSA_PROP_UCM_MODIFIER "alsa.ucm.modifier"
|
#define PA_ALSA_PROP_UCM_MODIFIER "alsa.ucm.modifier"
|
||||||
|
|
||||||
|
/* Corresponds to the "JackControl" UCM value. */
|
||||||
|
#define PA_ALSA_PROP_UCM_JACK_CONTROL "alsa.ucm.jack_control"
|
||||||
|
|
||||||
typedef struct pa_alsa_ucm_verb pa_alsa_ucm_verb;
|
typedef struct pa_alsa_ucm_verb pa_alsa_ucm_verb;
|
||||||
typedef struct pa_alsa_ucm_modifier pa_alsa_ucm_modifier;
|
typedef struct pa_alsa_ucm_modifier pa_alsa_ucm_modifier;
|
||||||
typedef struct pa_alsa_ucm_device pa_alsa_ucm_device;
|
typedef struct pa_alsa_ucm_device pa_alsa_ucm_device;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue