[pulseaudio-discuss] [PATCH 5/6] ucm: Add support for "JackControl"
Tanu Kaskinen
tanu.kaskinen at linux.intel.com
Mon Mar 23 10:27:39 PDT 2015
On Tue, 2015-03-10 at 17:39 +0530, Arun Raghavan wrote:
> On Thu, 2015-02-12 at 15:11 +0200, Tanu Kaskinen wrote:
> > JackControl is used to indicate the kcontrol name for jack detection.
> > ---
> > src/modules/alsa/alsa-ucm.c | 25 ++++++++++++++++++++-----
> > src/modules/alsa/alsa-ucm.h | 3 +++
> > 2 files changed, 23 insertions(+), 5 deletions(-)
> >
> > diff --git a/src/modules/alsa/alsa-ucm.c b/src/modules/alsa/alsa-ucm.c
> > index aa2d601..ef6adcd 100644
> > --- a/src/modules/alsa/alsa-ucm.c
> > +++ b/src/modules/alsa/alsa-ucm.c
> > @@ -90,6 +90,7 @@ static struct ucm_items item[] = {
> > {"CaptureRate", PA_ALSA_PROP_UCM_CAPTURE_RATE},
> > {"CaptureChannels", PA_ALSA_PROP_UCM_CAPTURE_CHANNELS},
> > {"TQ", PA_ALSA_PROP_UCM_QOS},
> > + {"JackControl", PA_ALSA_PROP_UCM_JACK_CONTROL},
> > {NULL, NULL},
> > };
> >
> > @@ -1262,9 +1263,18 @@ static int ucm_create_mapping(
> > 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;
> > - 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)
> > 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_plugged = PA_AVAILABLE_YES;
> > 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);
> >
> > @@ -1343,9 +1358,9 @@ static int ucm_create_profile(
> > ucm_create_mapping(ucm, ps, p, dev, verb_name, name, sink, source);
> >
> > 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)
> > - 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
> > diff --git a/src/modules/alsa/alsa-ucm.h b/src/modules/alsa/alsa-ucm.h
> > index 20dc999..a8c8090 100644
> > --- a/src/modules/alsa/alsa-ucm.h
> > +++ b/src/modules/alsa/alsa-ucm.h
> > @@ -84,6 +84,9 @@ typedef void snd_use_case_mgr_t;
> > /** For devices: The modifier (if any) that this device corresponds to */
> > #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_modifier pa_alsa_ucm_modifier;
> > typedef struct pa_alsa_ucm_device pa_alsa_ucm_device;
>
> Looks good to me, ack.
Thanks, I pushed this patch now.
--
Tanu
More information about the pulseaudio-discuss
mailing list