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

Takashi Iwai tiwai at suse.de
Fri Sep 21 16:16:31 CEST 2007

At Thu, 20 Sep 2007 11:46:12 -0400,
J. Scott Merritt wrote:
> On Thu, 20 Sep 2007 16:23:30 +0200
> Takashi Iwai <tiwai at suse.de> wrote:
> > 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.
> It appears that (currently) the additional benefit of snd_pcm_recover
> is simply that of resuming the stream.  However, I haven't seen any
> details on when/why a stream would become suspened and require this
> type of recovery.

The audio apps (or system) usually want to know when the stream is
stopped unexpectedly.  The suspend/resume is exactly as same as XRUN
from this perspective.  That's why it's handled by the application.
snd_pcm_recover() is provided to handle it more easily.

> Also, in SALSA, it appears that snd_pcm_recover can -block- even if
> the stream has been configured for non-blocking behavior.

It's with ALSA-lib, too.  The snd_pcm_recover() code is identical in
both libraries.  This is the function that may block regardless what
mode you use.

The non-blocking mode isn't specified for ioctls but for
read/write in general.  In theory, the normal snd_pcm_prepare() could
block (take some time) if the driver is implemented in such a way.


More information about the Alsa-devel mailing list