?? mix.c
字號:
/* * dump current mixer settings * * (c) 1998 Gerd Knorr <kraxel@goldbach.in-berlin.de> * */#include <stdio.h>#include <stdlib.h>#include <fcntl.h>#include <unistd.h>#include <errno.h>#include <sys/ioctl.h>#include <sys/soundcard.h>char *labels[] = SOUND_DEVICE_LABELS;char *names[] = SOUND_DEVICE_NAMES;intdump_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<<i) & devmask) { if (-1 == ioctl(mix,MIXER_READ(i),&volume)) { perror("mixer read volume"); return -1; } printf(" %-10s (%2d) : %s %s%s", names[i],i, (1<<i) & stereomask ? "stereo" : "mono ", (1<<i) & recmask ? "rec" : " ", (1<<i) & recsrc ? "*" : " "); if ((1<<i) & stereomask) printf(" %d/%d\n",volume & 0xff,(volume >> 8) & 0xff); else printf(" %d\n",volume & 0xff); } } return 0;}intmain(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;}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -