Lines Matching refs:ctl

56     struct mixer_ctl *ctl;
70 if (mixer->ctl) {
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);
113 mixer->ctl = calloc(elist.count, sizeof(struct mixer_ctl));
115 if (!mixer->ctl || !mixer->info)
134 mixer->ctl[n].info = ei;
135 mixer->ctl[n].mixer = mixer;
140 mixer->ctl[n].ename = enames;
179 return mixer->ctl + id;
193 return mixer->ctl + n;
198 const char *mixer_ctl_get_name(struct mixer_ctl *ctl)
200 if (!ctl)
203 return (const char *)ctl->info->id.name;
206 enum mixer_ctl_type mixer_ctl_get_type(struct mixer_ctl *ctl)
208 if (!ctl)
211 switch (ctl->info->type) {
222 const char *mixer_ctl_get_type_string(struct mixer_ctl *ctl)
224 if (!ctl)
227 switch (ctl->info->type) {
238 unsigned int mixer_ctl_get_num_values(struct mixer_ctl *ctl)
240 if (!ctl)
243 return ctl->info->count;
270 int mixer_ctl_get_percent(struct mixer_ctl *ctl, unsigned int id)
272 if (!ctl || (ctl->info->type != SNDRV_CTL_ELEM_TYPE_INTEGER))
275 return int_to_percent(ctl->info, mixer_ctl_get_value(ctl, id));
278 int mixer_ctl_set_percent(struct mixer_ctl *ctl, unsigned int id, int percent)
280 if (!ctl || (ctl->info->type != SNDRV_CTL_ELEM_TYPE_INTEGER))
283 return mixer_ctl_set_value(ctl, id, percent_to_int(ctl->info, percent));
286 int mixer_ctl_get_value(struct mixer_ctl *ctl, unsigned int id)
291 if (!ctl || (id >= ctl->info->count))
295 ev.id.numid = ctl->info->id.numid;
296 ret = ioctl(ctl->mixer->fd, SNDRV_CTL_IOCTL_ELEM_READ, &ev);
300 switch (ctl->info->type) {
320 int mixer_ctl_set_value(struct mixer_ctl *ctl, unsigned int id, int value)
325 if (!ctl || (id >= ctl->info->count))
329 ev.id.numid = ctl->info->id.numid;
330 ret = ioctl(ctl->mixer->fd, SNDRV_CTL_IOCTL_ELEM_READ, &ev);
334 switch (ctl->info->type) {
351 return ioctl(ctl->mixer->fd, SNDRV_CTL_IOCTL_ELEM_WRITE, &ev);
354 int mixer_ctl_get_range_min(struct mixer_ctl *ctl)
358 if (!ctl || (ctl->info->type != SNDRV_CTL_ELEM_TYPE_INTEGER))
361 return ctl->info->value.integer.min;
364 int mixer_ctl_get_range_max(struct mixer_ctl *ctl)
368 if (!ctl || (ctl->info->type != SNDRV_CTL_ELEM_TYPE_INTEGER))
371 return ctl->info->value.integer.max;
374 unsigned int mixer_ctl_get_num_enums(struct mixer_ctl *ctl)
376 if (!ctl)
379 return ctl->info->value.enumerated.items;
382 const char *mixer_ctl_get_enum_string(struct mixer_ctl *ctl,
387 if (!ctl || (ctl->info->type != SNDRV_CTL_ELEM_TYPE_ENUMERATED) ||
388 (enum_id >= ctl->info->value.enumerated.items))
391 return (const char *)ctl->ename[enum_id];
394 int mixer_ctl_set_enum_by_string(struct mixer_ctl *ctl, const char *string)
400 if (!ctl || (ctl->info->type != SNDRV_CTL_ELEM_TYPE_ENUMERATED))
403 num_enums = ctl->info->value.enumerated.items;
405 if (!strcmp(string, ctl->ename[i])) {
408 ev.id.numid = ctl->info->id.numid;
409 ret = ioctl(ctl->mixer->fd, SNDRV_CTL_IOCTL_ELEM_WRITE, &ev);