[alsa-devel] Timing of linked devices

louis at museresearch.com louis at museresearch.com
Sat Jun 13 00:52:03 CEST 2009

I am developing an application which opens both inputs and outputs for
digital and s/pdif (so, 4 devices).  The sync IDs all match.  However,
under certain conditions, I am receiving partial buffers from the input. 
So, I have a few questions:

Does linking input and output devices, from a programmer's perspective,
mean that input is ready at precisely the same time that the device is
ready to output a buffer?  Or, does it only mean that the ins and outs
will be synchronized for each given buffer?  More to the point, will
blocking on a write also accurately tell the program when the device is
ready for a read (including under non-ideal circumstances like after a
bunch of xruns)?

And, in the case that I am doing a non-blocking read (pcm_read) from a
buffer which is not yet ready, should I receive an outdated buffer, a
blank buffer, or one which has both partially new and  partially old data?

I am using ALSA 1.0.15 and the ICE1724 driver.

Thanks in advance for your help!
- Louis

More information about the Alsa-devel mailing list