At Wed, 19 Sep 2007 16:17:55 -0700, Sheng (Sean) Liu wrote: > > 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? It's about start_threshold for sw_params, corresponding to snd_pcm_sw_params_set_start_threshold(). > 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? snd_pcm_hw_params(), and optionally, snd_pcm_sw_params(). The former is for the mandatory hardware settings, such as, access mode, format, channels, sample rate, buffer size, period size, etc. Once after snd_pcm_hw_params() is called and the device is set up, it's ready to go. In addition, you can do more fine tuning of some parameters such as start_threshold in the above via snd_pcm_sw_params(). This is an optional action. Once after snd_pcm_hw_params() is done, you can start the stream via snd_pcm_start() explicitly for the capture stream. For the playback stream, usually the automatic start via a proper start_threshold is used. Well, a graphical diagram would be good to explain such a thing. We can put it to Wiki. Any taker, please? Takashi _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel