[alsa-devel] EPIPE and underruns
Jaroslav Kysela
perex at perex.cz
Mon Oct 4 23:08:44 CEST 2010
On Mon, 4 Oct 2010, Andrew Bell wrote:
> On Mon, Oct 4, 2010 at 3:45 PM, Jaroslav Kysela <perex at perex.cz> wrote:
>> On Mon, 4 Oct 2010, Andrew Bell wrote:
>>
>>> Hi,
>>>
>>> Can somebody explain precisely the circumstances leading to an EPIPE
>>> as the result of a pcm_snd_writei()?
>>
>> Simply, the driver consumed all queued samples in the ring buffer.
>>
>>> What buffer has been underrun that leads to this error? Does
>>> providing more data to pcn_snd_writei() help alleviate the issue?
>>
>> Yes, also the ring buffer size may be increased depending on the stream
>> parameter setup to prevent underruns.
>
> Is there some reason not to write all the data that you want played at
> once other than snd_pcm_writei() may block?
>
> Can you point out some code that detects this underrun condition (I've
> found a bunch of candidates, but they don't obviously scream "underrun
> here!".
snd_pcm_update_state() in pcm_lib.c (driver) the 'if (avail >=
runtime->stop_threshold)' condition.
Jaroslav
-----
Jaroslav Kysela <perex at perex.cz>
Linux Kernel Sound Maintainer
ALSA Project, Red Hat, Inc.
More information about the Alsa-devel
mailing list