[alsa-devel] Question about snd_pcm_update_hw_ptr_post()

Timur Tabi timur at freescale.com
Mon Mar 3 21:42:45 CET 2008

Can someone explain to me this snippet from snd_pcm_update_hw_ptr_post():

if (avail >= runtime->stop_threshold) {
	if (substream->runtime->status->state == SNDRV_PCM_STATE_DRAINING)
	return -EPIPE;

During playback, avail = snd_pcm_playback_avail().  Does this mean that avail is
number of frames available in the playback DMA buffer for new data?

If so, why is avail >= runtime->stop_threshold considered an underrun condition?
 Does ALSA try to keep the amount of available data to a minimum?

If so, how can I adjust runtime->stop_threshold?  I'd like to see what happens
if I make stop_threshold equal to the size of my DMA buffer.

Timur Tabi
Linux kernel developer at Freescale

More information about the Alsa-devel mailing list