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.
Takashi