One-pole smoothing filter (first order section) in vDSP ?

9 views
Skip to first unread message

Luigi Castelli

unread,
Oct 26, 2015, 8:41:04 AM10/26/15
to PerfOpt-Dev
Hi there,

I am trying to find a way to use vDSP to implement a one-pole smoothing filter.
This is a very common type of filter and I find myself using it all over the place.
Hence I would like to use vDSP to optimize its execution speed if possible.
I am very familiar with the vDSP library and I know that there is no optimized function to directly implement a first order section.

The options I have been exploring are:

vDSP_biquad():
the whole API is great but it is overkill for such a simple structure.
Furthermore it implements only second order sections.

vDSP_deq22():
it could be possible to use it but this function too only implements a 2-pole/2-zero second order section, so probably the speed gains (if any) are not great.

Thinking a little bit more out of the box I have been looking at vDSP_vintb()
This function implements the exact mathematical operations used to implement a first order section but - of course - it is not recursive.

Can anybody think of a way to make it recursive (maybe by feeding it with the same array for input and output shifted in time by one sample?
Any other way/idea on how to optimize a first order section using any of Apple's vector libraries?
Is my only option to file a feature request for something like a vDSP_deq11() function ?

Thanks for any comment, advice, suggestion…

Best

- Luigi
Reply all
Reply to author
Forward
0 new messages