Home | History | Annotate | Download | only in tinyalsa

Lines Matching defs:mixer

0 /* mixer.c
49 struct mixer *mixer;
54 struct mixer {
62 void mixer_close(struct mixer *mixer)
66 if (!mixer)
69 if (mixer->fd >= 0)
70 close(mixer->fd);
72 if (mixer->ctl) {
73 for (n = 0; n < mixer->count; n++) {
74 if (mixer->ctl[n].ename) {
75 unsigned int max = mixer->ctl[n].info->value.enumerated.items;
77 free(mixer->ctl[n].ename[m]);
78 free(mixer->ctl[n].ename);
81 free(mixer->ctl);
84 if (mixer->elem_info)
85 free(mixer->elem_info);
87 free(mixer);
92 struct mixer *mixer_open(unsigned int card)
97 struct mixer *mixer = NULL;
111 mixer = calloc(1, sizeof(*mixer));
112 if (!mixer)
115 mixer->ctl = calloc(elist.count, sizeof(struct mixer_ctl));
116 mixer->elem_info = calloc(elist.count, sizeof(struct snd_ctl_elem_info));
117 if (!mixer->ctl || !mixer->elem_info)
120 if (ioctl(fd, SNDRV_CTL_IOCTL_CARD_INFO, &mixer->card_info) < 0)
127 mixer->count = elist.count;
128 mixer->fd = fd;
129 elist.space = mixer->count;
134 for (n = 0; n < mixer->count; n++) {
135 struct snd_ctl_elem_info *ei = mixer->elem_info + n;
139 mixer->ctl[n].info = ei;
140 mixer->ctl[n].mixer = mixer;
145 mixer->ctl[n].ename = enames;
160 return mixer;
166 if (mixer)
167 mixer_close(mixer);
173 const char *mixer_get_name(struct mixer *mixer)
175 return (const char *)mixer->card_info.name;
178 unsigned int mixer_get_num_ctls(struct mixer *mixer)
180 if (!mixer)
183 return mixer->count;
186 struct mixer_ctl *mixer_get_ctl(struct mixer *mixer, unsigned int id)
188 if (mixer && (id < mixer->count))
189 return mixer->ctl + id;
194 struct mixer_ctl *mixer_get_ctl_by_name(struct mixer *mixer, const char *name)
198 if (!mixer)
201 for (n = 0; n < mixer->count; n++)
202 if (!strcmp(name, (char*) mixer->elem_info[n].id.name))
203 return mixer->ctl + n;
210 ioctl(ctl->mixer->fd, SNDRV_CTL_IOCTL_ELEM_INFO, ctl->info);
311 ret = ioctl(ctl->mixer->fd, SNDRV_CTL_IOCTL_ELEM_READ, &ev);
351 ret = ioctl(ctl->mixer->fd, SNDRV_CTL_IOCTL_ELEM_READ, &ev);
371 ret = ioctl(ctl->mixer->fd, SNDRV_CTL_IOCTL_TLV_READ, tlv);
380 ret = ioctl(ctl->mixer->fd, SNDRV_CTL_IOCTL_ELEM_READ, &ev);
412 ret = ioctl(ctl->mixer->fd, SNDRV_CTL_IOCTL_ELEM_READ, &ev);
437 return ioctl(ctl->mixer->fd, SNDRV_CTL_IOCTL_ELEM_WRITE, &ev);
473 ret = ioctl(ctl->mixer->fd, SNDRV_CTL_IOCTL_TLV_WRITE, tlv);
494 return ioctl(ctl->mixer->fd, SNDRV_CTL_IOCTL_ELEM_WRITE, &ev);
546 ret = ioctl(ctl->mixer->fd, SNDRV_CTL_IOCTL_ELEM_WRITE, &ev);