3 Jan
2012
3 Jan
'12
9:32 p.m.
while(1) { retval=snd_pcm_readi(pAlsaConfig->pcm_handle, buffer, pAlsaConfig->alsaBufferSize); snd_pcm_writei(pAlsaConfig->pcm_handle1, buffer,retval); snd_pcm_writei(pAlsaConfig->pcm_handle2, buffer,retval); }
This code doesn't work in the general case where the different devices don't share a common audio clock and have different physical capture/playback rates. Compensating for clock drift requires the use of asynchronous sample-rate conversion. Assuming you have a perfectly synchronous system, you could make use of snd_pcm_delay() to compensate for delays incurred in the driver/firmware/hardware. This is not well supported by all drivers though. -Pierre