/* * dump current mixer settings * * (c) 1998 Gerd Knorr * */ #include #include #include #include #include #include #include char *labels[] = SOUND_DEVICE_LABELS; char *names[] = SOUND_DEVICE_NAMES; int dump_mixer(char *devname) { struct mixer_info info; int mix,i,devmask,recmask,recsrc,stereomask,volume; if (-1 == (mix = open(devname,O_RDONLY))) return -1; printf("%s",devname); if (-1 != ioctl(mix,SOUND_MIXER_INFO,&info)) printf(" = %s (%s)",info.id,info.name); printf("\n"); if (-1 == ioctl(mix,MIXER_READ(SOUND_MIXER_DEVMASK),&devmask) || -1 == ioctl(mix,MIXER_READ(SOUND_MIXER_STEREODEVS),&stereomask) || -1 == ioctl(mix,MIXER_READ(SOUND_MIXER_RECMASK),&recmask) || -1 == ioctl(mix,MIXER_READ(SOUND_MIXER_RECSRC),&recsrc)) { perror("mixer ioctl"); return -1; } for (i = 0; i < SOUND_MIXER_NRDEVICES; i++) { if ((1<> 8) & 0xff); else printf(" %d\n",volume & 0xff); } } return 0; } int main(int argc, char *argv[]) { char devname[32]; int i; /* first mixer device. If "mixer0" does'nt work, try "mixer" */ if (-1 == dump_mixer("/dev/mixer0")) dump_mixer("/dev/mixer"); /* other more devices */ for (i = 1; i < 8; i++) { sprintf(devname,"/dev/mixer%d",i); dump_mixer(devname); } return 0; }