On Sun, Sep 29, 2013 at 08:19:08PM -0400, Paul Davis wrote:
> There is no difference between jack_iodelay and *older* versions of Fons'
As long as you measure a delay that is
* independent of frequency in the range (approx) FS/64 up to FS/16,
* constant or slowly changing
both versions will measure the same. The newer version will be
more tolerant if those conditions are not satisfied, which is
certainly the case here (the delay seems to increase in a non-
Delay is calculated for phase measurements on a series of sine
waves which have frequencies chosen to have some mathematical
The basic measurement is done at FS/16. This provides a delay
D in the range [0...16) samples. The real delay is D + k * 16
samples, with k integer. The other frequencies do not affect
precision, but are used to find the value of k.
The original version used 4 such frequencies, each of them
multiplying the unambiguous range by a factor of 8. The first
one will add k_1 * 16 samples, the second k_2 * 128 samples
and so on, with k_1...k4 integers in the range 0..7. The phase
measurements provide a value in the range [0..8) which is then
rounded to the nearest integer. This means that any error must
be smaller than 360/16 degrees, or the wrong k_n will result.
The new version uses 12 frequencies, each of them doubling the
range. This will produce the correct result if phase errors are
less than 360/4 degrees.
For a good signal, the values computed from those frequencies
will be close to an integer. The difference is tested, and if
greater than 0.2 the result is flagged as suspect or rejected.
When the delay is changing in steps (as is the case here), it's
easy to get values that are inconsistent.
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)
Linux-audio-dev mailing list