[LAU] Estimating JACK latency

Fons Adriaensen fons at linuxaudio.org
Thu May 3 10:15:18 UTC 2012


On Wed, May 02, 2012 at 04:51:03PM -1000, Joel Roth wrote:
> On Tue, Apr 17, 2012 at 05:09:52PM +0000, Fons Adriaensen wrote:
> > The nominal roundtrip-delay (physical input to physical output
> > if you connect the corresponding ports directly) is period * nperiods.
> > 
> > 1 * period occurs at the input, (nperiods - 1) * period at the output.
> 
> If this is correct, Patrick Shirkey should update his page at
> 
> http://linux-audio.com/jack/
> 
> Quote:
> 
>     p affects input latency: how long from when a piece of data
>     arrives at the audio interface connectors until user space
>     software can use it?
> 
>     p*n affects output latency: how long from when a piece of
>     data is delivered by user space data until it leaves the
>     audio interface connectors?
> 
>     Roundtrip latency is combination of these two.

Which is not completely wrong, just a little inaccurate.

Suppose you configure for 2 periods. The the following happens:

Capture           A   B   C   D   E   F
Processing        -   A   B   C   D   E 
Playback          -   -   A   B   C   D   

For 3 periods, this becomes:

Capture           A   B   C   D   E   F
Processing        -   A   B   C   D   E 
Playback          -   -   -   A   B   C   

And for 4 periods:

Capture           A   B   C   D   E   F
Processing        -   A   B   C   D   E 
Playback          -   -   -   -   A   B   

The advantage of having more that 2 periods is that processing
can be late without ill consequences, e.g. for 3 periods

Capture           A   B   C   D   E   F
Processing        -   -   A   B   C   D 
Playback          -   -   -   A   B   C   

still works fine. That is, the ALSA API allows this. It's not 100%
clear to me if Jack would allow it, as it has some internal checks
for things being 'on time'.

Jack2's async mode (also the default) adds one period of latency,
things are as if you had configured for one more period. That is
because of doing 

1. Read from capture device
2. Process
3. Write to playback device

in each cycle, it does

1. Read from capture device
2. Write result of previous cycle to playback device
3. Process 


Ciao,

-- 
FA

A world of exhaustive, reliable metadata would be an utopia.
It's also a pipe-dream, founded on self-delusion, nerd hubris
and hysterically inflated market opportunities. (Cory Doctorow)



More information about the Linux-audio-user mailing list