|
本帖最后由 shruger 于 2012-8-30 17:19 编辑
最近项目需要用到混音器,思路是通过ioctl 向/dev/mixer 发送控制命令来读取和设定
首先读取混音通道:
- ioctl(fd, SOUND_MIXER_READ_DEVMASK, &devmask);
复制代码 其次获得通道掩码 devmask,然后进行掩码比较,判断是否存在通道,我现在寻找的是pcm通道(SOUND_MIXER_PCM):
- if ( ((1 << SOUND_MIXER_PCM) & devmask) ) {
- //set left and right channel level
复制代码
最后写入设置:
- ioctl(fd, MIXER_WRITE(device), &level)
复制代码
按照这种思路写的代码在pc上测试成功,能够正常调节音量。可是在tq2440上测试有问题,主要是
(1 << SOUND_MIXER_PCM) & devmask 语句返回 0, 也就是声卡上找不到pcm混音通道。难道是UDA1341 声卡的问题,还是声卡驱动问题?
以下是我的一段测试代码[见附件]在 tq2440 运行结果:
[root@EmbedSky /]# ./armmixer
usage: ./armmixer <device> <left-gain%> <right-gain%>
./armmixer <device> <gain%>
Where <device> is one of:
vol bass treble mic igain
红色字体代表可用的混音通道。
我在电脑或者友善的Tiny6410板子上测试后都有输出个 pcm,不知道各位亲有木有。
测试代码:
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|