Home | History | Annotate | Download | only in tinyalsa

Lines Matching defs:mixer

0 /* mixer.c
48 struct mixer *mixer;
53 struct mixer {
60 void mixer_close(struct mixer *mixer)
64 if (!mixer)
67 if (mixer->fd >= 0)
68 close(mixer->fd);
70 if (mixer->ctl) {
71 for (n = 0; n < mixer->count; n++) {
72 if (mixer->ctl[n].ename) {
73 unsigned int max = mixer->ctl[n].info->value.enumerated.items;
75 free(mixer->ctl[n].ename[m]);
76 free(mixer->ctl[n].ename);
79 free(mixer->ctl);
82 if (mixer->info)
83 free(mixer->info);
85 free(mixer);
90 struct mixer *mixer_open(unsigned int card)
95 struct mixer *mixer = NULL;
109 mixer = calloc(1, sizeof(*mixer));
110 if (!mixer)
113 mixer->ctl = calloc(elist.count, sizeof(struct mixer_ctl));
114 mixer->info = calloc(elist.count, sizeof(struct snd_ctl_elem_info));
115 if (!mixer->ctl || !mixer->info)
122 mixer->count = elist.count;
123 mixer->fd = fd;
124 elist.space = mixer->count;
129 for (n = 0; n < mixer->count; n++) {
130 struct snd_ctl_elem_info *ei = mixer->info + n;
134 mixer->ctl[n].info = ei;
135 mixer->ctl[n].mixer = mixer;
140 mixer->ctl[n].ename = enames;
155 return mixer;
161 if (mixer)
162 mixer_close(mixer);
168 unsigned int mixer_get_num_ctls(struct mixer *mixer)
170 if (!mixer)
173 return mixer->count;
176 struct mixer_ctl *mixer_get_ctl(struct mixer *mixer, unsigned int id)
178 if (mixer && (id < mixer->count))
179 return mixer->ctl + id;
184 struct mixer_ctl *mixer_get_ctl_by_name(struct mixer *mixer, const char *name)
188 if (!mixer)
191 for (n = 0; n < mixer->count; n++)
192 if (!strcmp(name, (char*) mixer->info[n].id.name))
193 return mixer->ctl + n;
296 ret = ioctl(ctl->mixer->fd, SNDRV_CTL_IOCTL_ELEM_READ, &ev);
332 ret = ioctl(ctl->mixer->fd, SNDRV_CTL_IOCTL_ELEM_READ, &ev);
351 ret = ioctl(ctl->mixer->fd, SNDRV_CTL_IOCTL_ELEM_READ, &ev);
372 return ioctl(ctl->mixer->fd, SNDRV_CTL_IOCTL_ELEM_WRITE, &ev);
388 return ioctl(ctl->mixer->fd, SNDRV_CTL_IOCTL_ELEM_WRITE, &ev);
440 ret = ioctl(ctl->mixer->fd, SNDRV_CTL_IOCTL_ELEM_WRITE, &ev);