[alsa-devel] Standard mixer control names
tiwai at suse.de
Mon Feb 23 10:11:40 CET 2009
At Sun, 22 Feb 2009 00:36:30 +0100,
Lennart Poettering wrote:
> I'd like to add functionality to PulseAudio to allow a simplified
> selection of capture input (i.e. "Mic", "Line-In", ...) and playback
> outputs ("Headphones", "Line-Out", ...) for ALSA cards. By
> "simplified" I mean that only one input and output shall be active at
> a time. Also, some more nonsense items shall be filtered out
> (i.e. recording from "Phone"). Hence, basically I want to compile a
> list of available and whitelisted inputs and outputs and allow the
> user to select exactly one from each.
> ALSA is making that very hard to implement something like this because
> every driver seems to wrap input/output selection differently.
> On one card I have only has a couple of cswitches
> (snd-es1371). The same one has an enum "Mic Select". Another card has
> an enum "Input Source", but no cswitches (a HDA chip). The
> "ControlNames.txt" file in the kernel seems to suggest that there is an
> element "Capture Source".
That's because "Capture Source" can't work for multiple (sub)devices
with the mixer abstraction of alsa-lib, per design.
"Input Source" was born as a workaround (still found in many places
in the driver code). Maybe we should update ControlNames.txt as well.
> For playback it seems that some cards have a a headphone switch, and
> others a headphone slider (which i guess makes sense).
> Now, the question, how should I implement this?
> For playback the handling is easy as long as there is only one element
> to deal with, but what about capture? One option would be to simply
> go by cswitch and nothing else. Or go by "Input Source" and nothing
> else. Or combine some form. Now I'd of course prefer if the drivers
> get fixed to use a single element naming scheme only. Is there any
> chance to get that? And which one would that be?
I rarely believe this will be ever "fixed" in the driver side
completely. We may improve a bit, but not the whole stuff.
It's no good idea to have a restriction in the driver code because
the control API is just for generic purpose, not only about mixers.
And, many embedded devices love to have specific unique control names
just for their purpose...
More information about the Alsa-devel