Intel® Integrated Performance Primitives (Intel® IPP) Developer Guide and Reference
A newer version of this document is available. Customers should click here to go to the newest version.
FIRSR
Performs single-rate FIR filtering of a source vector.
Syntax
IppStatus ippsFIRSR_32f(const Ipp32f* pSrc, Ipp32f* pDst, int numIters, IppsFIRSpec_32f* pSpec, const Ipp32f* pDlySrc, Ipp32f* pDlyDst, Ipp8u* pBuf);
IppStatus ippsFIRSR_64f(const Ipp64f* pSrc, Ipp64f* pDst, int numIters, IppsFIRSpec_64f* pSpec, const Ipp64f* pDlySrc, Ipp64f* pDlyDst, Ipp8u* pBuf);
IppStatus ippsFIRSR_32fc(const Ipp32fc* pSrc, Ipp32fc* pDst, int numIters, IppsFIRSpec_32fc* pSpec, const Ipp32fc* pDlySrc, Ipp32fc* pDlyDst, Ipp8u* pBuf);
IppStatus ippsFIRSR32f_32fc(const Ipp32fc* pSrc, Ipp32fc* pDst, int numIters, IppsFIRSpec32f_32fc* pSpec, const Ipp32fc* pDlySrc, Ipp32fc* pDlyDst, Ipp8u* pBuf);
IppStatus ippsFIRSR_64fc(const Ipp64fc* pSrc, Ipp64fc* pDst, int numIters, IppsFIRSpec_64fc* pSpec, const Ipp64fc* pDlySrc, Ipp64fc* pDlyDst, Ipp8u* pBuf);
IppStatus ippsFIRSR_16s(const Ipp16s* pSrc, Ipp16s* pDst, int numIters, IppsFIRSpec_32f* pSpec, const Ipp16s* pDlySrc, Ipp16s* pDlyDst, Ipp8u* pBuf);
IppStatus ippsFIRSR_16sc(const Ipp16sc* pSrc, Ipp16sc* pDst, int numIters, IppsFIRSpec_32fc* pSpec, const Ipp16sc* pDlySrc, Ipp16sc* pDlyDst, Ipp8u* pBuf);
Include Files
ipps.h
Domain Dependencies
Headers: ippcore.h, ippvm.h
Libraries: ippcore.lib, ippvm.lib
Parameters
| pSrc | Pointer to the source vector. | 
| pDst | Pointer to the destination vector. | 
| numIters | Number of elements in the destination vector. | 
| pSpec | Pointer to the internal constant specification structure. | 
| pDlySrc | Pointer to the array containing values for the source delay lines. | 
| pDlyDst | Pointer to the array containing values for the destination delay line. | 
| pBuf | Pointer to the work buffer. | 
Description
Before using this function, you need to initialize the internal constant specification structure using the ippsFIRSRInit function.
This function filters the source vector using the single-rate FIR filter. Filtering is performed by the following formula:
 
 
   where
- x(0)...x(numIters) is the source vector
- h(0)...h(tapsLen-1) are the FIR filter coefficients
To compute the y(0)...y(tapsLen-1) destination vector, the function uses the pDlySrc array of the delay line. The length of the pDlySrc array is tapsLen-1 elements.
The first tapsLen-1 elements of the function are:
y(0)=h(tapsLen-1)*d(0)+h(tapsLen-2)*d(1)+...+h(1)*d(tapsLen-2)+h(0)*x(0)
y(1)=h(tapsLen-1)*d(1)+h(tapsLen-2)*d(2)+...+h(1)*x(0)+h(0)*x(1)
y(tapsLen-1)=h(tapsLen-1)*x(0)+...+h(1)*x(tapsLen-2)+h(0)*x(tapsLen-1)
where
d(0), d(1), d(2), and d(tapsLen-2) are the elements of the pDlySrc array
The last tapsLen-1 elements of the source vector are copied to the non-zero pDlyDst buffer for the next call of the FIR filter.
The arrays pDlySrc and pDlyDst support NULL values:
- if pDlySrc is NULL, the function uses the delay line with zero values
- if pDlyDst is NULL, the function does not copy any data to the destination delay line
Return Values
| ippStsNoErr | Indicates no error. | 
| ippStsNullPtrErr | Indicates an error when any of the specified pointers is NULL. |