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