[alsa-devel] When to start the capture device?

Sheng (Sean) Liu shengl at uci.edu
Thu Sep 20 01:17:55 CEST 2007

Hello everyone,
I am using ALSA to capture sound from a micrphone. I need to know when the
capture device starts. In Paul Davis' Tutorial, he mentioned two approaches.
But, I have questions on each of them.

When to start the device 

When you open the audio interface, ALSA ensures that it is not active - no
data is being moved to or from its external connectors. Presumably, at some
point you want this data transfer to begin. There are several options for
how to make this happen. 

1. The control point here the start threshold, which defines the number of
frames of space/data necessary to start the device automatically. If set to
some value other than zero for playback, it is necessary to prefill the
playback buffer before the device will start. If set to zero, the first data
written to the device (or first attempt to read from a capture stream) will
start the device. 
My question: what does he means on " If set to zero"? Does anyone know which
parameter of which API should be set to zero?

2. You can also start the device explicitly using snd_pcm_start, but this
requires buffer prefilling in the case of the playback stream. If you
attempt to start the stream without doing this, you will get -EPIPE as a
return code, indicating that there is no data waiting to deliver to the
playback hardware buffer.
My question: Is there anything to be done before calling snd_pcm_start in
the case of capturing stream? If there is, what are they?
Thanks in advance,

More information about the Alsa-devel mailing list