java 窗体音量调节,Mixer音量调节

Mixer音量调节

const char *sound_device_names[] = SOUND_DEVICE_NAMES;

int fd;

int devmask, stereodevs;

char *name;

void usage()

{

int i;

fprintf(stderr, "usage: %s \n"

" %s \n\n"

"Where is one of:\n", name, name);

for (i = 0 ; i < SOUND_MIXER_NRDEVICES ; i++)

if ((1 << i) & devmask)

fprintf(stderr, "%s ", sound_device_names[i]);

fprintf(stderr, "\n");

exit(1);

}

int main(int argc, char *argv[])

{

int left, right, level;

int status;

int device;

char *dev;

int i;

name = argv[0];

fd = open("/dev/mixer", O_RDONLY);

if (fd == -1) {

perror("unable to open /dev/mixer");

exit(1);

}

status = ioctl(fd, SOUND_MIXER_READ_DEVMASK, &devmask);

if (status == -1)

perror("SOUND_MIXER_READ_DEVMASK ioctl failed");

status = ioctl(fd, SOUND_MIXER_READ_STEREODEVS, &stereodevs);

if (status == -1)

perror("SOUND_MIXER_READ_STEREODEVS ioctl failed");

if (argc != 3 && argc != 4)

usage();

dev = argv[1];

for (i = 0 ; i < SOUND_MIXER_NRDEVICES ; i++)

if (((1 << i) & devmask) && !strcmp(dev, sound_device_names[i]))

break;

if (i == SOUND_MIXER_NRDEVICES) {

fprintf(stderr, "%s is not a valid mixer device\n", dev);

usage();

}

device = i;

if (argc == 4) {

left = atoi(argv[2]);

right = atoi(argv[3]);

} else {

left = atoi(argv[2]);

right = atoi(argv[2]);

}

if ((left != right) && !((1 << i) & stereodevs)) {

fprintf(stderr, "warning: %s is not a stereo device\n", dev);

}

level = (right << 8) + left;

status = ioctl(fd, MIXER_WRITE(device), &level);

if (status == -1) {

perror("MIXER_WRITE ioctl failed");

exit(1);

}

left = level & 0xff;

right = (level & 0xff00) >> 8;

fprintf(stderr, "%s gain set to %d%% / %d%%\n", dev, left, right);

close(fd);

return 0;

}

http://www.dengb.com/Javabc/1152832.htmlwww.dengb.comtruehttp://www.dengb.com/Javabc/1152832.htmlTechArticleMixer音量调节 const char *sound_device_names[] = SOUND_DEVICE_NAMES; int fd; int devmask, stereodevs; char *name; void usage() { int i; fprintf(stderr, "usage: %s \n" " %s \n\n...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值