[linux-audio-dev] I need help! I can't handle the problem about full-duplex (playback & record) programming
Pascal Haakmat
a.haakmat at chello.nl
Mon Dec 16 08:58:01 UTC 2002
15/12/02 20:14, leo zhu wrote:
> Hi, Haakmat,
>
> I'm so glad to see your reply. But I'm still wondering
> how I can implement the full duplex operation on sound
> card, i.e. playback and record audio on the same card
> at same time. I don't think it's a good idea that
> reopen the device when switch between reading and
> writting, because I found it sometime took much time
> to open the device and that means the quality wouldn't
> be good. Do u have another solution to it? Anybody
> have experience with it ? I really need suggestion
> about it and I also believe there must be some tricks
> which I havn't understood.
I think you're confused. What I mean is that you can open /dev/dsp
twice, once for reading and once for writing, simultaneously. Then you
have one handle for reading and one handle for writing:
record_fd = open("/dev/dsp", O_RDONLY);
play_fd = open("/dev/dsp", O_WRONLY);
while(...) {
r = read(record_fd, buf, count);
store_recorded_bytes(buf, r);
fill_playback_buffer(buf, count);
write(play_fd, buf, count);
}
close(record_fd);
close(play_fd);
I.e. you don't need to close()/open() every time you switch between
reading and writing. The loop approach is crude but it works. You
might also look at ALSA which has a more sophisticated architecture.
In my experience the ALSA drivers are not as good as the (non-free)
OSS ones though.
Pascal.
More information about the Linux-audio-dev
mailing list