[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