ctl: add an overview for design of ALSA control interface

This commit adds a description about the design of ALSA control interface
for  developers to understand a few components of low level.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
Takashi Sakamoto 2016-06-15 23:57:37 +09:00 committed by Takashi Iwai
parent f449a29943
commit f3c24de8c0

View file

@ -35,9 +35,29 @@ also interface notifying about control and structure changes.
\section control_general_overview General overview
The primitive controls can be integer, inter64, boolean, enumerators, bytes
and IEC958 structure.
In ALSA control feature, each sound card can have control elements. The elements
are managed according to below model.
- element set
- A set of elements with the same attribute (i.e. name, get/put operations).
Some element sets can be added to a sound card by drivers in kernel and
userspace applications.
- element
- An element can be identified by userspace applications. Each element has
own identical information.
- member
- An element includes some members to have a value. The value of each member
can be changed by both of userspace applications and drivers in kernel.
Each element can be identified by two ways; a combination of name and index, or
numerical number (numid).
The type of element set is one of integer, integerr64, boolean, enumerators,
bytes and IEC958 structure. This indicates the type of value for each member in
elements included in the element set.
When the value of member is changed, corresponding events are transferred to
userspace applications. The applications should subscribe any events in advance.
*/
#include <stdio.h>