[alsa-devel] When to start the capture device?
Takashi Iwai
tiwai at suse.de
Thu Sep 20 16:23:30 CEST 2007
At Thu, 20 Sep 2007 10:14:27 -0400,
J. Scott Merritt wrote:
>
> On Wed, 19 Sep 2007 16:17:55 -0700
> "Sheng \(Sean\) Liu" <shengl at uci.edu> wrote:
>
>
> > 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?
>
> I believe this would be 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?
>
> I use:
> snd_pcm_open
> SetUpHwParams () ... /* lots of snd_pcm_hw_params_set ... calls */
> SetUpSwParams () ... /* lots of snd_pcm_sw_params_set ... calls */
> snd_pcm_prepare
> snd_pcm_start
snd_pcm_prepare() can be omitted in this case. After
snd_pcm_hw_params(), the stream is set to PREPARED state. This isn't
changed after snd_pcm_sw_params(), too.
snd_pcm_prepare() is required to recover the stream from XRUN or any
other errors. But, for the recovery purpose, we have now
snd_pcm_recover() as a generic solution, too.
Takashi
More information about the Alsa-devel
mailing list