[alsa-devel] Underrun

Clemens Ladisch clemens at ladisch.de
Tue Mar 1 14:42:47 CET 2011

Irfan Shaikh wrote:
> I am getting many under-run in my audio capture and playback application.
> 1) My CAPTURE buffer is of 1024 * 8 (Period size * no of periods), PLAYBACK buffer is of (512 * 16)
> 2) I try to read 8 K frames each time and write returned frames to playback device.

If you wait until the capture buffer is full, it's likely that you
get over/underruns at this moment.  You have to do the processing in
smaller chunks.

Typically, in loops like this, the normal state is that the capture
buffer is almost empty, and the playback buffer almost full.  You read
one period from the capture buffer (waiting for it if necessary),
process it, and write it to the playback buffer.  You need at least two
period per buffer so that one can be captured/played while the other one
is being processed, and maybe more periods as safety against delays.

> B) Can i use snd_pcm_prepare() twice in two consecutive lines

Yes (if the driver isn't buggy).



This e-mail contains public information intended for any subscriber of
this mailing list and for anybody else who bothers to read it; it will
be copied, disclosed and distributed to the public.  If you think you
are not the intended recipient, please commit suicide immediately.
These terms apply also to any e-mails quoted in, referenced from, or
answering this e-mail, and supersede any disclaimers in those e-mails.
Additionally, disclaimers in those e-mails will incur legal processing
fees of $42 per line; you have agreed to this by reading this disclaimer.

More information about the Alsa-devel mailing list