[alsa-devel] When to start the capture device?
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