[alsa-devel] Join play of pcm in multiple playback devices
    Pierre-Louis Bossart 
    pierre-louis.bossart at linux.intel.com
       
    Tue Jan  3 22:32:23 CET 2012
    
    
  
> 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
    
    
More information about the Alsa-devel
mailing list