[alsa-devel] ALSA and MediaController

Takashi Iwai tiwai at suse.de
Tue May 17 20:43:43 CEST 2011


At Tue, 17 May 2011 12:48:59 -0500,
pl bossart wrote:
> 
> During the ALSA/Embedded audio workshop two weeks ago we talked about
> using the MediaController API (merged in 2.6.39) to provide userspace
> with a graph-like representation of the transforms implemented in
> firmware or hardware.
> Two main applications were mentioned:
> - volume control, at the moment in PulseAudio we get a flat list of
> volume controls and we use a convoluted mixer logic to figure out if
> 'pcm playback volume' is done before or after 'master playback
> volume'.
> - tuning applications. With literally dozens of controls exposed in
> embedded solutions, a flat list is going to be very hard to use. It
> would make sense during the device tuning steps to figure out which
> controls is located where to better understand its impacts. This would
> help create UCM configuration files as well.

The current flat array implementation is a result after hard time
with attempts of implementing the graph in mixer API at the time
of ALSA 0.5.x.  This ended up with a total mess of the code.

Maybe now we'd implement it differently, but I believe that the
flat array itself is the best as the primary data form.
We can provide some extended attributes to each control if needed.

> At the moment the Media Controller does not provide means to set any
> values/parameters in a media_entity. We would need to cross-reference
> each media_entity with ALSA controls and use the existing control
> get/set interfaces. This raises 2 main questions:
> - Is the list of ALSA controls is completely defined after the card
> initialization step? Or do we have cases where ALSA controls are
> created dynamically after the init? I tend to believe the former is
> true but want to verify this with others on the mailing list. It's my
> understanding that only connections may be changed in such a graph.
> - Laurent suggested a new ioctl to export media_entity information to
> userspace, as a binary buffer containing a list of TLV
> (Type-Length-Value) field. However it looks like there's already an
> ELEM_BYTES control type. It might make more sense to expose this
> information using native ALSA controls, but again feedback from smart
> people on this list would be welcome.

You may use a TLV information provided for each control element, too.
So far, this provides only the dB information.  But it doesn't have to
be restricted to that.


Takashi


More information about the Alsa-devel mailing list