[alsa-devel] Handling non-buffer-sized MMAP requests
Raymond Yau
superquad.vortex2 at gmail.com
Sat Dec 18 01:32:47 CET 2010
2010/12/13 Clemens Ladisch <clemens at ladisch.de>
> louis at museresearch.com wrote:
> > Hi everyone, I'm having some difficulty improving a full-duplex MMAP ALSA
> > routine. ALSA sometimes reports more samples available for input than my
> > buffer can take, or asks for more samples than I have available. Is this
> > a buffer overrun/underrun?
>
> Yes. (And this should happen only when you've disabled stopping on
> an xrun, so you've asked for it. :-)
>
> > If I restart the streams in the case that too
> > much input is available (on the assumption that it's an xrun) it seems to
> > happen at the drop of a hat and makes things worse. If I discard the
> > excess input, that doesn't work well either.
> >
> > What is the appropriate way to deal with this situation?
>
> The best way would be to prevent this situation from happening, i.e.,
> read the captured data from the buffer before it overflows.
>
> (In the case of capturing, latency does _not_ depend on the buffer size,
> so you should make the buffer as big as possible.)
>
>
Refer to http://thread.gmane.org/gmane.linux.alsa.devel/66826/focus=66954
you mention that snd_pcm_forward can be used to recover from an underrun
condition for playback
In underrun/overrun of playback/capture , the hardware pointer is ahead of
the application pointer
Can snd_pcm_forward be used to recover from overrun in capture when
automatic stop is disabled ?
Why does Pulseaudio server request rewind at the end of underrun ?
D: protocol-native.c: Requesting rewind due to *end of underrun*
More information about the Alsa-devel
mailing list