On Fri, Jun 19, 2009 at 12:33:24AM +0200, Lennart Poettering wrote:
This is basically what happens. However in PA we are
much more dynamic
than JACK generally is. JACK clients generally just have a single
stream of PCM data which is passed between the RT and the non-RT
threads. However, PA is not as simple as that. We have streams coming
and going all the time, our control data changes. That's why we need
to change our internal pipeline and other shared meta data often while
streaming. In JACK the answer to pipeline changes is considering them
something that doesn't normally happen and when it happens then
drop-outs are fine. That doesn't really work for PA. If we'd drop out
each time someone triggeres a stupid event sound to be played then uh,
that would make people very unhappy. So, in PA that line is blurred
and we do change our pipeline while streaming, which means
communication between the control and the RT threads needs to go
beyond simple passing of PCM data. We need to be able to make changes
to the control stuff too. And some of that we do in asynchronous
fashion, by asynchronously triggering something in the RT loop to be
executed when the RT loop thinks it's a good time and verified that a
bit of is timeslace is available.
What I don't understand is this:
- You wait, e.g. using frames_since_cycle_start(),
until near the end of the current period, then give
up if nothing wants your attention.
- Since it has to be 'until near the end' and not
'exactly the end', this doesn't exclude that some
event could still happen within the current period
but after you stopped waiting for it.
- Such an event then has to be handled in the next
period. If this is acceptable, why wouldn't it be
acceptable for things that happened just a bit
earlier ? Which would mean you could afford to
wait less.
- In the limit you don't have to wait at all after
the normal callbackk processing has been done,
everything that happens later will be dealt with
in the next period. Jack periods are rarely > 1024
samples.
What am I missing ?
Ciao,
--
FA
Io lo dico sempre: l'Italia รจ troppo stretta e lunga.