1. What's the difference between multirate FIR filter and multirate Stream FIR filter?
2. I need a multirate filter that will process an input of any length at a time, and be able to pick up where it left off when called again. For a decimating filter, that means it must maintain the decimation phase between calls. It also means the number of samples produced in each call is not fixed. (It's only fixed if the length of the input is divisible by the decimation ratio)
Does IPP have anything I can use?
FIR MR "stream" doesn't care about delay line - so it's user resposibility to provide correct pointer to source data and it's length: for multi-rate stream FIR filters, the length of the pSrc is equal to numIters*downFactor + (tapLen-1)/upFactor+ 1, the length of the pDst is equal to numIters *upFactor. The general FIR MR stores delay line in its state structure - so user should not care about correct input/output vectors stitching - it is done by the function automatically - FIR MR can be called any times with any numIters parameter - if these pieces of input vector are parts of one single signal sequence - an output will contain correctly stitched filtered signal as all input signal is processed at once - in one function call.