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!