-
Notifications
You must be signed in to change notification settings - Fork 112
dsp: p_firsym: API issue and implementation #158
Description
Although I think having a separate implementation specific for filters with symmetric coefficients is a great idea, there is the issue of dealing with the different types of symmetric FIR filters. For reference:
- Type I: symmetric coefficients, odd length;
- Type II: symmetric coefficients, even length (cannot be high pass, zero at -1);
- Type III: anti-symmetric coefficients, odd length (cannot be high pass, low pass, or band stop, zeros at +1 and -1);
- Type IV: anti-symmetric coefficients, odd length (cannot be low pass, zero at +1).
The way the function description is written today, I guess it would imply a type II filter. The implementation of all these FIR are very similar, but it should be defined whether it would make more sense to have (a) a single function that support all types of filters or (b) different functions.
For (a), the function interface needs to be updated to either pass symmetric/anti-symmetric and odd/even length parameters or the filter type. Option (b) would mean less branching and more straightforward code, although it could increase code footprint if someone used all 4 kinds of filters in a project (something really unlikely in practice).
I've written the code, but I guess I'll wait for a consensus before submitting a pull request.