[alsa-devel] Alsa timing question
Olivier Guillion - Myriad
olivier at myriad-online.com
Sat Aug 27 10:08:32 CEST 2011
Raymond Toy <rtoy at google.com> wrote :
> > IMO, it's not a good idea to try to synchronize perfectly two processes by way
> > of an interrupt. If the generating process has to remain untouched, you should
> > probably bufferize its data in your own process before sending it to writei.
> > It would add some latency, but make the data flow safer. Here is how it could
> > work: 1- Your process writes a "magic" pattern at the end of the shared area
> > 2- It sends a signal to the other process to make it generate data 3- It
> > checks whether the magic pattern is still here 4- When changed, it means the
> > data have been calculated. It saves them to an internal circular buffer
> A nice idea, but I'm not sure it will work in my scenario. The "magic"
> pattern could potentially be real data (the buffer contains audio samples), so
> that would cause funny, hard-to-reproduce glitches.
You are theorically right, even if I doubt that much genuine audio buffer could
end with, let's say : 0x8000 0x7FFF followed by "This is magic!!!" string :)
> Plus, I think that when I
> request new data, something is always written.
I thought it was asynchronous, and you just send a signal to your generating
process to ask it generate data.
> Clemens idea of a counter at the beginning of the buffer would work nicely, but
> requires changes in the generating process.
Right. But if you can modify the generating process and recompile it, there is
no more problem. Can you?
More information about the Alsa-devel