Developer Reference

  • 2020
  • 10/21/2020
  • Public Content
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
.

Product and Performance Information

1

Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804