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

Takashi Iwai tiwai at suse.de
Wed Jun 20 12:45:46 CEST 2007

At Sat, 16 Jun 2007 23:35:15 +0200,
Joachim Förster wrote:
> Hi Takashi,
> thanks for your answer,
> On Thu, 2007-06-14 at 12:39 +0200, Takashi Iwai wrote:
> > > 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.
> Ok, ahm, I think my question was not about what I really wanted to know
> - sorry. I have to reformulate it: In fact I would like to know, how the
> ALSA-library mmap code behaves regarding the last chunk of samples, for
> example: Consider aplay, playing a wav file and the wav file's
> size/number of samples does _not_ fit to a multiple of a period's size.
> Then, does the mmap code copy these last samples as is _or_ does it copy
> one whole last period (which is filled with zeros)?

No, you have to fill silence by yourself before committing the mmap
chunk.  The mmap code itself doesn't care about it.


More information about the Alsa-devel mailing list