[alsa-devel] Some questions about userspace control elements

Clemens Ladisch clemens at ladisch.de
Fri Feb 6 10:38:48 CET 2015


Takashi Sakamoto wrote:
> On Feb 5 2015 08:51, Takashi Sakamoto wrote:
>> sound/core/control.c:1188
>> {{{
>> kctl.count = info->owner ? info->owner : 1;
>> }}}
>>
>> In this code, the value in struct snd_ctl_elem_info.owner is assigned to
>> struct snd_kcontrol.count. The meaning of these two member is completely
>> different but assigned.

There is hardware that has many identical controls.  To save memory,
ALSA treats controls with .count > 1 as if there were multiple controls.

This optimization is not visible in the userspace API.

The owner field is used because there is no other field to set the
count.

> When any userspace control element are added, the value of struct
> snd_ctl_elem_info.owner is zero because there's no API to set this
> member in userspace

So far, setting this field has not been needed.  An API could be added.

>> I guess that the reason is to limit the number of event generated when
>> the control element set is operated.

If a driver needs twenty identical controls, it could create one control
with count=20, or twenty controls with count=1.  In both cases, twenty
events are sent.


Regards,
Clemens


More information about the Alsa-devel mailing list