原来在2.6.13内核的系统下写了一个音频的程序。用全双工模式的。一边录音一边放音,使用正常
就是用fd = open("/dev/dsp", O_RDWR)的方式使用音频设备
但换成2.6.29内核的系统。这个程序重新编译后,运行时说/dev/dsp打开的参数错误。
后来试了一下,用O_RDONLY和O_WRONLY参数就正常。但只能单工应用。新的驱动不支持O_RDWR这个参数。
看了一下驱动,2.6.13用的是OSS的。2.6.29用的好像是ALSA SOC的,我不太懂ALSA SOC的架构。但是网站上说也可以兼容OSS方式的。但为什么不支持O_RDWR参数了?
我用友善的QT里的自带程序“录音机”和“音乐”两个程序测试同时运行的方法来测试,在放音的同时可以录音,在录音的同时可以放音。就是采样频率不对,后启动的程序会使用先启动的程序的采样率。
说明2.6.29的声卡驱动是支持全双工的。
请问我在2.6.29内核上实现全双工的音频应用(类似VOIP的应用)应该用什么方式编程?