IIRInit_BiQuad
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
, x0,-1
, B0,2
, y0,-2
, y0,-1
, x1,-2
, x1,-1
, y1,-2
, y1,-1
, ... xnumBq
-1,-2
, xnumBq
-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
, B0,1
, B0,2
, A0,0
, A0,1
, A0,2
; B1,0
, B1,1
, B1,2
, A1,0
, A1,1
, A1,2
; . . . AnumBq
-1,2
A
n,0
≠ 0, Bn,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 isNULL.
- ippStsDivByZeroErr
- Indicates an error when A0, An,0or Bn,0is equal to 0.
- ippStsIIROrderErr
- Indicates an error whennumBqis less than or equal to 0.