); if (arg != SIZE) perror("unable to set sample size"); /* 设置采样时的通道数量 */ arg = CHANNELS; status = ioctl(fd, SOUND_PCM_WRITE_CHANNELS, &arg); if (status == - 1) perror("SOUND_PCM_WRITE_CHANNELS ioctl failed"); if (arg != CHANNELS) perror("unable to set number of channels"); /* 设置采样率 */ arg = RATE; status = ioctl(fd, SOUND_PCM_WRITE_RATE, &arg); if (status == - 1) perror("SOUND_PCM_WRITE_WRITE ioctl failed"); /* 轮回,直到按下Control-C */ while (1) { printf("Say something:\n"); status = read(fd, buf, sizeof(buf)); /* 灌音 */ if (status != sizeof(buf)) perror("read wrong number of bytes"); printf("You said:\n"); status = write(fd, buf, sizeof(buf)); /* 放音 */ if (status != sizeof(buf)) perror("wrote wrong number of bytes"); /* 在持续灌音前等待放音停止 */ status = ioctl(fd, SOUND_PCM_SYNC, 0); if (status == - 1) perror("SOUND_PCM_SYNC ioctl failed"); } } 2、mixer 编程
命 令 作 用
SOUND_MIXER_VOLUME 主音量调节
SOUND_MIXER_BASS 低音控制
SOUND_MIXER_TREBLE 高音控制
SOUND_MIXER_SYNTH FM 合成器
SOUND_MIXER_PCM 主D/A 转换器
SOUND_MIXER_SPEAKER PC 喇叭
SOUND_MIXER_LINE 音频线输入
SOUND_MIXER_MIC 麦克风输入
SOUND_MIXER_CD CD 输入
SOUND_MIXER_IMIX 放音音量
SOUND_MIXER_ALTPCM 大年夜D/A 转换器
推荐阅读
程序员的未来在哪里?扎心了
视野。但不知为何,法度榜样员在很多人中的印象并不是特别好,蓬头垢面、满脸油光、格子衫、小短裤似乎成了法度榜样员的代名词。
反不雅同一公司里的其它岗亭,产品、运营、>>>详细阅读
本文标题:Linux音频设备驱动架构及应用编程
地址:http://www.17bianji.com/lsqh/38578.html
1/2 1