On Fri, 24 Jan 2003, Paul Davis wrote:
no, there's likely not much latency jitter in pd
either. after the
first 27 periods are filled (which happens in about 39ms), every chunk
of audio delivered by pd to the hardware will be output by the
hardware about 38ms later. the jitter is limited to about 1.45ms,
assuming that pd is roughly keeping up with the hardware. of course,
But there's no way a normal user-space can reliably wake-up every 1.45ms
and manages do finish i/o for next period. The application is bound to
late, much of the time. This is not necessarily fatal if the application
is able to catch up. This is precisely the reason why you can get very
reliably processing with ecasound using -z:intbuf option (maximize use of
soundcard hw buffering).
However, as Kai pointed out, nobody runs JACK with -p
64 -n 27, and if
they did, I suspect that they'd get similar performance to pd. it
Actually, with current jackd you cannot use -p 64 -n 27, as it will
throw the "delay of %.3f usecs exceeds estimated spare time of %.3f;
restart ..." error and stop the alsa_driver. I made a patch that bypasses
this check and managed to get jackd running with -p 64 -n 27. And indeed,
it runs reasonably well on my laptop (normal user space), but I still
get xrun from ALSA. Below are some stats. As you can see from the
'delay' values, the latency jitter is considerable, even though the test
machine was not doing anything else than jackd+ecasound playback.
--cut--
[xxx]$ cat /proc/asound/card0/pcm0p/sub0/{sw_params,hw_params,status}
tstamp_mode: NONE
period_step: 1
sleep_min: 0
avail_min: 64
xfer_align: 64
start_threshold: 0
stop_threshold: 1728
silence_threshold: 0
silence_size: 0
boundary: 1811939328
access: MMAP_INTERLEAVED
format: S16_LE
subformat: STD
channels: 2
rate: 44100 (44100/1)
period_size: 64
buffer_size: 1728
tick_time: 10000
state: RUNNING
trigger_time: 1043423501.808278
tstamp : 1043423507.253736
delay : 1204
avail : 524
avail_max : 704
-----
hw_ptr : 240268
appl_ptr : 241472
[xxx]$ cat /proc/asound/card0/pcm0p/sub0/{sw_params,hw_params,status}
tstamp_mode: NONE
period_step: 1
sleep_min: 0
avail_min: 64
xfer_align: 64
start_threshold: 0
stop_threshold: 1728
silence_threshold: 0
silence_size: 0
boundary: 1811939328
access: MMAP_INTERLEAVED
format: S16_LE
subformat: STD
channels: 2
rate: 44100 (44100/1)
period_size: 64
buffer_size: 1728
tick_time: 10000
state: RUNNING
trigger_time: 1043424884.923610
tstamp : 1043424886.101041
delay : 1678
avail : 50
avail_max : 1728
-----
hw_ptr : 51762
appl_ptr : 53440
--cut--
--
http://www.eca.cx
Audio software for Linux!