[LAU] Realtime latency kernel testing

Gabriel M. Beddingfield gabrbedd at gmail.com
Wed Jan 12 13:03:54 UTC 2011


On Friday, January 07, 2011 04:18:57 pm Gabriel M. 
Beddingfield wrote:
> Before I FUD someone else's application... a perfect
> example is StretchPlayer (using RubberBand).  I can't
> get it to be RT-safe at <256... and it's marginal at
> 256.

FYI, I did some testing with RubberBand and found that it 
has a fixed minimum processing window/time of 512 frames.  
This makes it dangerous to use with <512 frames/period 
because it does too much work in one period.

For example, at 64 frames/period I measured these processing 
times for subsequent process() cycles:

Process time = 1533 usecs
Process time = 1851 usecs
Process time = 1787 usecs
Process time = 26 usecs
Process time = 18 usecs
Process time = 20 usecs
Process time = 22 usecs
Process time = 19 usecs
Process time = 18 usecs
Process time = 21 usecs
Process time = 22 usecs
Process time = 20 usecs
Process time = 17 usecs
Process time = 18 usecs
Process time = 21 usecs
Process time = 18 usecs
Process time = 21 usecs
Process time = 26 usecs
Process time = 22 usecs
Process time = 27 usecs
Process time = 20 usecs
Process time = 30 usecs
Process time = 27 usecs
Process time = 66 usecs
Process time = 1893 usecs
Process time = 18 usecs
Process time = 29 usecs
Process time = 24 usecs
Process time = 20 usecs
Process time = 18 usecs
Process time = 22 usecs
Process time = 18 usecs
Process time = 1518 usecs
Process time = 20 usecs
Process time = 21 usecs
Process time = 23 usecs
Process time = 21 usecs
Process time = 17 usecs
Process time = 22 usecs
Process time = 21 usecs
Process time = 1654 usecs

I.e. it does all its calculations every 8 periods 
(512/64)... instead of doing a little bit in each period.

This behavior makes it dangerous to use RubberBand at less 
than 512 frames/period because it eats up your processor 
headroom.  However, if you have a really fast processor you 
can usually get away with it.

It looks like it's possible to make the window smaller by 
hacking RubberBand... but I can't figure out how to do it 
through the public API.

-gabriel


More information about the Linux-audio-user mailing list