[LAD] timing the processing of queues between engine and ui threads?

Emanuel Rumpf xbran at web.de
Mon Nov 7 23:45:08 UTC 2011


2011/11/6 Paul Davis <paul at linuxaudiosystems.com>:
> On Sun, Nov 6, 2011 at 2:20 AM, Emanuel Rumpf <xbran at web.de> wrote:
>> 2011/11/5 Iain Duncan <iainduncanlists at gmail.com>:
>>> On Thu, Nov 3, 2011 at 8:05 PM, David Robillard <d at drobilla.net> wrote:
>>>>
>>>>
>>>> The only difference non-jack would make is you need some function to
>>>> tell you roughly what audio time it is you can call from another thread.
>>>
>>> Does one use the system clock for that?
>> I think frame time (a frame of samples) is meant here  ? That time is
>> delivered in the jackd process callback.
>>
>>> Is it accurate enough?
>> Depends on the system clock used, I presume.
>> For best accuracy, you have to configure your kernel to support HPET
>> (high precision event) timers
>> and make ALSA use it as default.
>
> the clock used for the system clock is less important than using a DLL
> to "link" the audio clock and the system clock. this enables you to
> answer the question "if its time T on clock1, what time is it on
> clock2?"
>
> fons wrote the canonical paper on this for a Linux Audio conference a
> few years ago, and JACK contains a DLL for this purpose
> (jack_get_microseconds() will return a prediction of the current time
> according to the audio clock, based on the system clock and the DLL.
>

Thanks for the hint, Paul, and to Fons of course.
An interresting paper, found it here:
http://kokkinizita.linuxaudio.org/papers/index.html

Still, I wonder:
Why not compute the time of any sample - relative - to a random start
time (using sample frequency) ?
( The start time would be the time, a recording or playback was started. )

For example:
At f = 48000 Hz, I would expect a soundcard to deliver exactly 48000 *
10 = 48E4 samples in 10 seconds.
Is this assumtion wrong ?

If this applied, one could easily calculate the time-position of
Sample S = 96000
based on a random start time (offset) T0 = 10 seconds:
(We know the answer : 10 sec + 2 sec = 12 sec )
Calculation:
1 sec / 48000 Hz * 96000 + 10 sec = 12 sec
(position of sample nr. 96000)

-- 
E.R.



More information about the Linux-audio-dev mailing list