Intel® Integrated Performance Primitives (Intel® IPP) Developer Guide and Reference

ID 790148
Date 3/22/2024
Public
Document Table of Contents

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.

See Also