[alsa-devel] ALSA always writes _whole_ periods, right?

Takashi Iwai tiwai at suse.de
Thu Jun 14 12:39:50 CEST 2007


At Wed, 13 Jun 2007 18:23:38 +0200,
Joachim Förster wrote:
> 
> Hi ALSA devs,
> 
> I have a quick question regarding the filling of the usual ring buffer
> in RAM (used by sound controllers via DMA), just to be really sure:
> 
> Is it true, that ALSA always writes (via mmap'ing) _whole_ periods?

The whole buffer is, of course, used.  Otherwise you'll get obvious
noises :)

But if you're asking about the timinig, then no.  How much data is
written at which timing isn't strictly defined in mmap mode.  The
PCM core just checks the available size at each
snd_pcm_period_elapsed(), and reports XRUN if needed.  That's all.

> I took snd-dummy and modified it to use "ack()" method and tried to
> confirm, if the above is true _without_ memory mapping (classical
> read/write). It seem's to be true, ALSA is "filling up" the last (not
> always complete) period - e.g. if the played wav file is not a multiple
> of periodsize in length.
> But well, with mmap, I cannot see the copying action (done by ALSA
> library, right?) ... so, thus my question ;-) .

Right, copy / ack aren't involved with mmap mode...


Takashi


More information about the Alsa-devel mailing list