I see odd behaviour using ippsFIRMR_16sc. The documentation seems to indicate it expects a complex filter.
Ipp32fc filter_taps[max_number_taps];
I initialize my filter taps with a windowed sinc function in the real part and zeros in the imaginary. Then I initialize p_spec as shown.
IPP_status = ippsFIRMRInit_32fc(filter_taps, tap_length, up_factor, 0, down_factor, 0, p_spec);
When I apply the filter in the following way, the result looks like a bandstop filter, which is what I would expect to see if the complex filter created above were used as a real filter with my filter coefficients in the even filter taps and zeros in the odd.
IPP_status = ippsFIRMR_16sc(buffer, sampled_buffer, sampled_size, p_spec, NULL, NULL, p_buf);
Does ippsFIRMR_16sc expect the filter to be real instead of complex?