Developer Reference

  • 2020
  • 07/15/2020
  • Public Content
Contents

IIRInit_BiQuad

Initializes an IIR filter state.

Syntax

Case 1: Operation on integer samples
IppStatus ippsIIRInit32f_BiQuad_16s(IppsIIRState32f_16s**
ppState
, const Ipp32f*
pTaps
, int
numBq
, const Ipp32f*
pDlyLine
, Ipp8u*
pBuf
);
IppStatus ippsIIRInit64f_BiQuad_16s(IppsIIRState64f_16s**
ppState
, const Ipp64f*
pTaps
, int
numBq
, const Ipp64f*
pDlyLine
, Ipp8u*
pBuf
);
IppStatus ippsIIRInit64f_BiQuad_32s(IppsIIRState64f_32s**
ppState
, const Ipp64f*
pTaps
, int
numBq
, const Ipp64f*
pDlyLine
, Ipp8u*
pBuf
);
IppStatus ippsIIRInit32fc_BiQuad_16sc(IppsIIRState32fc_16sc**
ppState
, const Ipp32fc*
pTaps
, int
numBq
, const Ipp32fc*
pDlyLine
, Ipp8u*
pBuf
);
IppStatus ippsIIRInit64fc_BiQuad_16sc(IppsIIRState64fc_16sc**
ppState
, const Ipp64fc*
pTaps
, int
numBq
, const Ipp64fc*
pDlyLine
, Ipp8u*
pBuf
);
IppStatus ippsIIRInit64fc_BiQuad_32sc(IppsIIRState64fc_32sc**
ppState
, const Ipp64fc*
pTaps
, int
numBq
, const Ipp64fc*
pDlyLine
, Ipp8u*
pBuf
);
IppStatus ippsIIRInit64f_BiQuad_DF1_32s(IppsIIRState64f_32s**
ppState
, const Ipp64f*
pTaps
, int
numBq
, const Ipp32s*
pDlyLine
, Ipp8u*
pBuf
);
Case 2: Operation on floating point samples
IppStatus ippsIIRInit_BiQuad_32f(IppsIIRState_32f**
ppState
, const Ipp32f*
pTaps
, int
numBq
, const Ipp32f*
pDlyLine
, Ipp8u*
pBuf
);
IppStatus ippsIIRInit64f_BiQuad_32f(IppsIIRState64f_32f**
ppState
, const Ipp64f*
pTaps
, int
numBq
, const Ipp64f*
pDlyLine
, Ipp8u*
pBuf
);
IppStatus ippsIIRInit_BiQuad_64f(IppsIIRState_64f**
ppState
, const Ipp64f*
pTaps
, int
numBq
, const Ipp64f*
pDlyLine
, Ipp8u*
pBuf
);
IppStatus ippsIIRInit_BiQuad_32fc(IppsIIRState_32fc**
ppState
, const Ipp32fc*
pTaps
, int
numBq
, const Ipp32fc*
pDlyLine
, Ipp8u*
pBuf
);
IppStatus ippsIIRInit64fc_BiQuad_32fc(IppsIIRState64fc_32fc**
ppState
, const Ipp64fc*
pTaps
, int
numBq
, const Ipp64fc*
pDlyLine
, Ipp8u*
pBuf
);
IppStatus ippsIIRInit_BiQuad_64fc(IppsIIRState_64fc**
ppState
, const Ipp64fc*
pTaps
, int
numBq
, const Ipp64fc*
pDlyLine
, Ipp8u*
pBuf
);
IppStatus ippsIIRInit_BiQuad_DF1_32f(IppsIIRState_32f**
ppState
, const Ipp32f*
pTaps
, int
numBq
, const Ipp32f*
pDlyLine
, Ipp8u*
pBuf
);
Include Files
ipps.h
Domain Dependencies
Headers:
ippcore.h
,
ippvm.h
Libraries:
ippcore.lib
,
ippvm.lib
Parameters
pTaps
Pointer to the array containing the taps. The number of elements in the array is 6*
numBq
.
numBq
Number of cascades of biquads.
pDlyLine
Pointer to the array containing the delay line values. The number of elements in the array is 2*
numBq
.
ppState
Pointer to the pointer to the biquad IIR state structure.
pBuf
Pointer to the external buffer.
ppState
Pointer to the pointer to the arbitrary IIR state structure to be created.
Description
This function initializes a biquad (BQ) IIR filter state in the external buffer. The size of this buffer must be computed previously by calling the corresponding function
ippsIIRGetStateSize_BiQuad
. The initialization function copies the taps from the array
pTaps
into the state structure
ppState
. The array
pDlyLine
specifies the delay line values. The number of elements in the array
pDlyLine
is 4*
numBq
for the function flavor
ippsIIRInit_BiQuad_DF1
, and 2*
numBq
for all other flavors.
If the pointer to the array
pDlyLine
is not
NULL
, the array content is copied into the context structure, otherwise the delay values of the state structure are set to 0.
The function flavor
ippsIIRInit_BiQuad_DF1
operates with the delay line values that are arranged in the array as follows:
x
0,-2
, x
0,-1
, B
0,2
, y
0,-2
, y
0,-1
, x
1,-2
, x
1,-1
, y
1,-2
, y
1,-1
, ... x
numBq
-1,-2
, x
numBq
-1,-1
, y
numBq
-1,-2,
y
numBq
-1,-1.
A biquad IIR filter is defined by a cascade of biquads. The number of cascades of biquads is specified by the
numBq
value. The 6
*
numBq
-length array
pTaps
specifies the taps arranged in the array as follows:
B
0,0
, B
0,1
, B
0,2
, A
0,0
, A
0,1
, A
0,2
; B
1,0
, B
1,1
, B
1,2
, A
1,0
, A
1,1
, A
1,2
; . . . A
numBq
-1,2
A
n,0
≠ 0, B
n,0
≠ 0
If the state is not created, the initialization function returns an error status.
The initialization functions with the
32s_32f
suffixes called with floating-point taps automatically convert the taps into integer data type.
In all cases the data is converted into integer type with scaling for better precision.
Return Values
ippStsNoErr
Indicates no error.
ippStsNullPtrErr
Indicates an error when one of the specified pointers is
NULL
.
ippStsDivByZeroErr
Indicates an error when A
0
, A
n,0
or B
n,0
is equal to 0.
ippStsIIROrderErr
Indicates an error when
numBq
is less than or equal to 0.

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