[alsa-devel] Frame-based access (via mmap) and cross-device synchronisation

Metathronius Galabant m.galabant at googlemail.com
Mon Jul 20 16:03:06 CEST 2009

Hi all,

I could not find any examples, plus the alsa documentation and the
pcm.c example on mmap-style access is rather slim.
Consider the following setting:

I have 2 seperate HW devices that are NOT clock sync'ed; their period
is set to 10ms, and the total SW buffer is set to 20ms (= classic
double buffering) or 40ms.
Now I need to read from the 1st device and write to the 2nd device -
and read from the 2nd device and write to the 1st device.

Now, to synchronise - because their clocks do drift - I'd like to have
the following semantics:

At any given time x0, x1, ... xn I'd like to take some kind of
"snapshot" of both devices, ask them "how many frame do you have?".
This MUST NOT be restricted to the period, but it should be like
device1 has 80 frames, device2 only has 78 frames. In short I would
need pure frame-based access at any given time.
I will then manually discard or duplicate frames to keep both streams happy.

How do I achieve this kind of access method via alsa?

Any help is welcome. Thanks!

More information about the Alsa-devel mailing list