Home | History | Annotate | Download | only in libalsa-intf

Lines Matching defs:mixer

104     case SNDRV_CTL_ELEM_IFACE_MIXER: return "MIXER";
127 void mixer_close(struct mixer *mixer)
131 if (mixer->fd >= 0)
132 close(mixer->fd);
134 if (mixer->ctl) {
135 for (n = 0; n < mixer->count; n++) {
136 if (mixer->ctl[n].ename) {
137 unsigned max = mixer->ctl[n].info->value.enumerated.items;
139 free(mixer->ctl[n].ename[m]);
140 free(mixer->ctl[n].ename);
143 free(mixer->ctl);
146 if (mixer->info)
147 free(mixer->info);
149 free(mixer);
152 struct mixer *mixer_open(const char *device)
157 struct mixer *mixer = NULL;
173 mixer = calloc(1, sizeof(*mixer));
174 if (!mixer)
177 mixer->ctl = calloc(elist.count, sizeof(struct mixer_ctl));
178 mixer->info = calloc(elist.count, sizeof(struct snd_ctl_elem_info));
179 if (!mixer->ctl || !mixer->info)
186 mixer->count = elist.count;
187 mixer->fd = fd;
188 elist.space = mixer->count;
193 for (n = 0; n < mixer->count; n++) {
194 struct snd_ctl_elem_info *ei = mixer->info + n;
198 mixer->ctl[n].info = ei;
199 mixer->ctl[n].mixer = mixer;
204 mixer->ctl[n].ename = enames;
219 return mixer;
224 if (mixer)
225 mixer_close(mixer);
231 void mixer_dump(struct mixer *mixer)
236 for (n = 0; n < mixer->count; n++) {
238 struct snd_ctl_elem_info *ei = mixer->info + n;
273 ALOGV(" { %s=0", mixer->ctl[n].ename[0]);
275 ALOGV(", %s=%d", mixer->ctl[n].ename[m],m);
284 struct mixer_ctl *mixer_get_control(struct mixer *mixer,
288 for (n = 0; n < mixer->count; n++) {
289 if (mixer->info[n].id.index == index) {
290 if (!strncmp(name, (char*) mixer->info[n].id.name,
291 sizeof(mixer->info[n].id.name))) {
292 return mixer->ctl + n;
299 struct mixer_ctl *mixer_get_nth_control(struct mixer *mixer, unsigned n)
301 if (n < mixer->count)
302 return mixer->ctl + n;
329 if (ioctl(ctl->mixer->fd, SNDRV_CTL_IOCTL_TLV_READ, xtlv) < 0) {
416 if (ioctl(ctl->mixer->fd, SNDRV_CTL_IOCTL_ELEM_READ, &ev))
519 return ioctl(ctl->mixer->fd, SNDRV_CTL_IOCTL_ELEM_WRITE, &ev);
603 return ioctl(ctl->mixer->fd, SNDRV_CTL_IOCTL_ELEM_WRITE, &ev);
606 /* the api parses the mixer control input to extract
684 return ioctl(ctl->mixer->fd, SNDRV_CTL_IOCTL_ELEM_WRITE, &ev);
744 if (ioctl(ctl->mixer->fd, SNDRV_CTL_IOCTL_ELEM_WRITE, &ev) < 0)