Home | History | Annotate | Download | only in amixer

Lines Matching refs:elem

287 	int (*get_range)(snd_mixer_elem_t *elem, long *min, long *max);
288 int (*get)(snd_mixer_elem_t *elem, snd_mixer_selem_channel_id_t c,
290 int (*set)(snd_mixer_elem_t *elem, snd_mixer_selem_channel_id_t c,
297 int (*has_volume)(snd_mixer_elem_t *elem);
301 static int set_playback_dB(snd_mixer_elem_t *elem,
304 return snd_mixer_selem_set_playback_dB(elem, c, value, 0);
307 static int set_capture_dB(snd_mixer_elem_t *elem,
310 return snd_mixer_selem_set_capture_dB(elem, c, value, 0);
334 static int set_volume_simple(snd_mixer_elem_t *elem,
342 if (! vol_ops[dir].has_volume(elem))
351 vol_ops[dir].v[VOL_RAW].get_range(elem, &pmin, &pmax) < 0)
368 if (vol_ops[dir].v[vol_type].get_range(elem, &pmin, &pmax) < 0)
375 if (vol_ops[dir].v[vol_type].get(elem, chn, &orig) < 0)
386 err = vol_ops[dir].v[vol_type].set(elem, chn, val);
548 static int show_control(const char *space, snd_hctl_elem_t *elem,
561 if ((err = snd_hctl_elem_info(elem, info)) < 0) {
566 snd_hctl_elem_get_id(elem, id);
592 if ((err = snd_hctl_elem_info(elem, info)) < 0) {
605 if ((err = snd_hctl_elem_read(elem, control)) < 0) {
644 if ((err = snd_hctl_elem_tlv_read(elem, tlv, 4096)) < 0) {
660 snd_hctl_elem_t *elem;
674 for (elem = snd_hctl_first_elem(handle); elem; elem = snd_hctl_elem_next(elem)) {
675 if ((err = snd_hctl_elem_info(elem, info)) < 0) {
681 snd_hctl_elem_get_id(elem, id);
685 show_control(" ", elem, 1);
700 snd_mixer_elem_t *elem;
702 elem = snd_mixer_find_selem(handle, id);
703 if (!elem) {
710 if (snd_mixer_selem_has_common_volume(elem)) {
712 if (snd_mixer_selem_has_playback_volume_joined(elem))
715 if (snd_mixer_selem_has_playback_volume(elem)) {
717 if (snd_mixer_selem_has_playback_volume_joined(elem))
720 if (snd_mixer_selem_has_capture_volume(elem)) {
722 if (snd_mixer_selem_has_capture_volume_joined(elem))
726 if (snd_mixer_selem_has_common_switch(elem)) {
728 if (snd_mixer_selem_has_playback_switch_joined(elem))
731 if (snd_mixer_selem_has_playback_switch(elem)) {
733 if (snd_mixer_selem_has_playback_switch_joined(elem))
736 if (snd_mixer_selem_has_capture_switch(elem)) {
738 if (snd_mixer_selem_has_capture_switch_joined(elem))
740 if (snd_mixer_selem_has_capture_switch_exclusive(elem))
744 if (snd_mixer_selem_is_enum_playback(elem)) {
746 } else if (snd_mixer_selem_is_enum_capture(elem)) {
748 } else if (snd_mixer_selem_is_enumerated(elem)) {
752 if (snd_mixer_selem_is_enumerated(elem)) {
756 items = snd_mixer_selem_get_enum_items(elem);
759 snd_mixer_selem_get_enum_item_name(elem, i, sizeof(itemname) - 1, itemname);
763 for (i = 0; !snd_mixer_selem_get_enum_item(elem, i, &idx); i++) {
764 snd_mixer_selem_get_enum_item_name(elem, idx, sizeof(itemname) - 1, itemname);
769 if (snd_mixer_selem_has_capture_switch_exclusive(elem))
771 snd_mixer_selem_get_capture_group(elem));
772 if (snd_mixer_selem_has_playback_volume(elem) ||
773 snd_mixer_selem_has_playback_switch(elem)) {
775 if (snd_mixer_selem_is_playback_mono(elem)) {
780 if (!snd_mixer_selem_has_playback_channel(elem, chn))
790 if (snd_mixer_selem_has_capture_volume(elem) ||
791 snd_mixer_selem_has_capture_switch(elem)) {
793 if (snd_mixer_selem_is_capture_mono(elem)) {
798 if (!snd_mixer_selem_has_capture_channel(elem, chn))
808 if (snd_mixer_selem_has_playback_volume(elem) ||
809 snd_mixer_selem_has_capture_volume(elem)) {
811 if (snd_mixer_selem_has_common_volume(elem)) {
812 snd_mixer_selem_get_playback_volume_range(elem, &pmin, &pmax);
813 snd_mixer_selem_get_capture_volume_range(elem, &cmin, &cmax);
816 if (snd_mixer_selem_has_playback_volume(elem)) {
817 snd_mixer_selem_get_playback_volume_range(elem, &pmin, &pmax);
820 if (snd_mixer_selem_has_capture_volume(elem)) {
821 snd_mixer_selem_get_capture_volume_range(elem, &cmin, &cmax);
827 pmono = snd_mixer_selem_has_playback_channel(elem, SND_MIXER_SCHN_MONO) &&
828 (snd_mixer_selem_is_playback_mono(elem) ||
829 (!snd_mixer_selem_has_playback_volume(elem) &&
830 !snd_mixer_selem_has_playback_switch(elem)));
831 cmono = snd_mixer_selem_has_capture_channel(elem, SND_MIXER_SCHN_MONO) &&
832 (snd_mixer_selem_is_capture_mono(elem) ||
833 (!snd_mixer_selem_has_capture_volume(elem) &&
834 !snd_mixer_selem_has_capture_switch(elem)));
837 snd_mixer_selem_has_capture_channel(elem, SND_MIXER_SCHN_MONO),
838 snd_mixer_selem_is_capture_mono(elem),
839 snd_mixer_selem_has_capture_volume(elem),
840 snd_mixer_selem_has_capture_switch(elem));
847 if (snd_mixer_selem_has_common_volume(elem)) {
848 snd_mixer_selem_get_playback_volume(elem, SND_MIXER_SCHN_MONO, &pvol);
850 if (!snd_mixer_selem_get_playback_dB(elem, SND_MIXER_SCHN_MONO, &db)) {
856 if (snd_mixer_selem_has_common_switch(elem)) {
857 snd_mixer_selem_get_playback_switch(elem, SND_MIXER_SCHN_MONO, &psw);
861 if (pmono && snd_mixer_selem_has_playback_channel(elem, SND_MIXER_SCHN_MONO)) {
867 if (!snd_mixer_selem_has_common_volume(elem)) {
868 if (snd_mixer_selem_has_playback_volume(elem)) {
871 snd_mixer_selem_get_playback_volume(elem, SND_MIXER_SCHN_MONO, &pvol);
873 if (!snd_mixer_selem_get_playback_dB(elem, SND_MIXER_SCHN_MONO, &db)) {
880 if (!snd_mixer_selem_has_common_switch(elem)) {
881 if (snd_mixer_selem_has_playback_switch(elem)) {
884 snd_mixer_selem_get_playback_switch(elem, SND_MIXER_SCHN_MONO, &psw);
889 if (cmono && snd_mixer_selem_has_capture_channel(elem, SND_MIXER_SCHN_MONO)) {
895 if (!snd_mixer_selem_has_common_volume(elem)) {
896 if (snd_mixer_selem_has_capture_volume(elem)) {
899 snd_mixer_selem_get_capture_volume(elem, SND_MIXER_SCHN_MONO, &cvol);
901 if (!snd_mixer_selem_get_capture_dB(elem, SND_MIXER_SCHN_MONO, &db)) {
908 if (!snd_mixer_selem_has_common_switch(elem)) {
909 if (snd_mixer_selem_has_capture_switch(elem)) {
912 snd_mixer_selem_get_capture_switch(elem, SND_MIXER_SCHN_MONO, &csw);
921 if ((pmono || !snd_mixer_selem_has_playback_channel(elem, chn)) &&
922 (cmono || !snd_mixer_selem_has_capture_channel(elem, chn)))
925 if (!pmono && !cmono && snd_mixer_selem_has_common_volume(elem)) {
926 snd_mixer_selem_get_playback_volume(elem, chn, &pvol);
928 if (!snd_mixer_selem_get_playback_dB(elem, chn, &db)) {
934 if (!pmono && !cmono && snd_mixer_selem_has_common_switch(elem)) {
935 snd_mixer_selem_get_playback_switch(elem, chn, &psw);
938 if (!pmono && snd_mixer_selem_has_playback_channel(elem, chn)) {
940 if (!snd_mixer_selem_has_common_volume(elem)) {
941 if (snd_mixer_selem_has_playback_volume(elem)) {
944 snd_mixer_selem_get_playback_volume(elem, chn, &pvol);
946 if (!snd_mixer_selem_get_playback_dB(elem, chn, &db)) {
953 if (!snd_mixer_selem_has_common_switch(elem)) {
954 if (snd_mixer_selem_has_playback_switch(elem)) {
957 snd_mixer_selem_get_playback_switch(elem, chn, &psw);
962 if (!cmono && snd_mixer_selem_has_capture_channel(elem, chn)) {
964 if (!snd_mixer_selem_has_common_volume(elem)) {
965 if (snd_mixer_selem_has_capture_volume(elem)) {
968 snd_mixer_selem_get_capture_volume(elem, chn, &cvol);
970 if (!snd_mixer_selem_get_capture_dB(elem, chn, &db)) {
977 if (!snd_mixer_selem_has_common_switch(elem)) {
978 if (snd_mixer_selem_has_capture_switch(elem)) {
981 snd_mixer_selem_get_capture_switch(elem, chn, &csw);
998 snd_mixer_elem_t *elem;
1021 for (elem = snd_mixer_first_elem(handle); elem; elem = snd_mixer_elem_next(elem)) {
1022 snd_mixer_selem_get_id(elem, sid);
1023 if (!(level & LEVEL_INACTIVE) && !snd_mixer_selem_is_active(elem))
1326 snd_hctl_elem_t *elem;
1335 elem = snd_hctl_find_elem(hctl, id);
1336 if (elem)
1337 show_control(" ", elem, LEVEL_BASIC | LEVEL_ID);
1397 static int get_enum_item_index(snd_mixer_elem_t *elem, char **ptrp)
1403 items = snd_mixer_selem_get_enum_items(elem);
1408 if (snd_mixer_selem_get_enum_item_name(elem, i, sizeof(name)-1, name) < 0)
1422 static int sset_enum(snd_mixer_elem_t *elem, unsigned int argc, char **argv)
1430 int ival = get_enum_item_index(elem, &ptr);
1433 if (snd_mixer_selem_set_enum_item(elem, chn, ival) >= 0)
1443 static int sset_channels(snd_mixer_elem_t *elem, unsigned int argc, char **argv)
1469 if ((dir & 1) && snd_mixer_selem_has_playback_channel(elem, chn)) {
1471 if (!strncmp(ptr, "mute", 4) && snd_mixer_selem_has_playback_switch(elem)) {
1472 snd_mixer_selem_get_playback_switch(elem, chn, &ival);
1473 if (snd_mixer_selem_set_playback_switch(elem, chn, get_bool_simple(&ptr, "mute", 1, ival)) >= 0)
1475 } else if (!strncmp(ptr, "off", 3) && snd_mixer_selem_has_playback_switch(elem)) {
1476 snd_mixer_selem_get_playback_switch(elem, chn, &ival);
1477 if (snd_mixer_selem_set_playback_switch(elem, chn, get_bool_simple(&ptr, "off", 1, ival)) >= 0)
1479 } else if (!strncmp(ptr, "unmute", 6) && snd_mixer_selem_has_playback_switch(elem)) {
1480 snd_mixer_selem_get_playback_switch(elem, chn, &ival);
1481 if (snd_mixer_selem_set_playback_switch(elem, chn, get_bool_simple(&ptr, "unmute", 0, ival)) >= 0)
1483 } else if (!strncmp(ptr, "on", 2) && snd_mixer_selem_has_playback_switch(elem)) {
1484 snd_mixer_selem_get_playback_switch(elem, chn, &ival);
1485 if (snd_mixer_selem_set_playback_switch(elem, chn, get_bool_simple(&ptr, "on", 0, ival)) >= 0)
1487 } else if (!strncmp(ptr, "toggle", 6) && snd_mixer_selem_has_playback_switch(elem)) {
1488 if (firstchn || !snd_mixer_selem_has_playback_switch_joined(elem)) {
1489 snd_mixer_selem_get_playback_switch(elem, chn, &ival);
1490 if (snd_mixer_selem_set_playback_switch(elem, chn, (ival ? 1 : 0) ^ 1) >= 0)
1495 if (set_volume_simple(elem, chn, &ptr, 0) >= 0)
1504 if ((dir & 2) && snd_mixer_selem_has_capture_channel(elem, chn)) {
1508 if (!strncmp(ptr, "cap", 3) && snd_mixer_selem_has_capture_switch(elem)) {
1509 snd_mixer_selem_get_capture_switch(elem, chn, &ival);
1510 if (snd_mixer_selem_set_capture_switch(elem, chn, get_bool_simple(&ptr, "cap", 0, ival)) >= 0)
1512 } else if (!strncmp(ptr, "rec", 3) && snd_mixer_selem_has_capture_switch(elem)) {
1513 snd_mixer_selem_get_capture_switch(elem, chn, &ival);
1514 if (snd_mixer_selem_set_capture_switch(elem, chn, get_bool_simple(&ptr, "rec", 0, ival)) >= 0)
1516 } else if (!strncmp(ptr, "nocap", 5) && snd_mixer_selem_has_capture_switch(elem)) {
1517 snd_mixer_selem_get_capture_switch(elem, chn, &ival);
1518 if (snd_mixer_selem_set_capture_switch(elem, chn, get_bool_simple(&ptr, "nocap", 1, ival)) >= 0)
1520 } else if (!strncmp(ptr, "norec", 5) && snd_mixer_selem_has_capture_switch(elem)) {
1521 snd_mixer_selem_get_capture_switch(elem, chn, &ival);
1522 if (snd_mixer_selem_set_capture_switch(elem, chn, get_bool_simple(&ptr, "norec", 1, ival)) >= 0)
1524 } else if (!strncmp(ptr, "toggle", 6) && snd_mixer_selem_has_capture_switch(elem)) {
1525 if (firstchn || !snd_mixer_selem_has_capture_switch_joined(elem)) {
1526 snd_mixer_selem_get_capture_switch(elem, chn, &ival);
1527 if (snd_mixer_selem_set_capture_switch(elem, chn, (ival ? 1 : 0) ^ 1) >= 0)
1532 if (set_volume_simple(elem, chn, &ptr, 1) >= 0)
1562 snd_mixer_elem_t *elem;
1603 elem = snd_mixer_find_selem(handle, sid);
1604 if (!elem) {
1614 if (snd_mixer_selem_is_enumerated(elem))
1615 err = sset_enum(elem, argc, argv);
1617 err = sset_channels(elem, argc, argv);
1668 static int element_callback(snd_hctl_elem_t *elem, unsigned int mask)
1671 events_remove(elem);
1675 events_info(elem);
1677 events_value(elem);
1693 snd_hctl_elem_t *elem)
1696 events_add(elem);
1746 static int melem_event(snd_mixer_elem_t *elem, unsigned int mask)
1750 snd_mixer_selem_get_id(elem, sid);
1762 static void sevents_add(snd_mixer_elem_t *elem)
1766 snd_mixer_selem_get_id(elem, sid);
1768 snd_mixer_elem_set_callback(elem, melem_event);
1772 snd_mixer_elem_t *elem)
1775 sevents_add(elem);