ResamplePolyphaseGetFixedFilter
ResamplePolyphaseGetFixedFilter
Gets polyphase resampling filter coefficients.
Syntax
IppStatus ippsResamplePolyphaseGetFixedFilter_16s(Ipp16s*
pDst
, int
step
, int
height
, const IppsResamplingPolyphaseFixed_16s*
pSpec
);
IppStatus ippsResamplePolyphaseGetFixedFilter_32f(Ipp32f*
pDst
, int
step
, int
height
, const IppsResamplingPolyphaseFixed_32f*
pSpec
);
Include Files
ipps.h
Domain Dependencies
Headers:
ippcore.h
,
ippvm.h
Libraries:
ippcore.lib
,
ippvm.lib
Parameters
- pDst
- The pointer to the output vector of filter coefficients.
- step
- The row step inpDstvector.
- height
- The number of filters (the number of rows inpDstvector).
- pSpec
- The pointer to the resampling state structure.
Description
This function exports filter coefficients from the polyphase resampling structure. If the
step
value is less than the filter length, only first step
coefficients are exported.Return Values
- ippStsNoErr
- Indicates no error.
- ippStsNullPtrErr
- Indicates an error when one of the specified pointers isNULL.
- ippStsSizeErr
- Indicates an error whensteporheightis less than or equal to 0.
- ippStsBadArgErr
- Indicates an error whenheightis greater than the number of filters inpSpecstructure.
Example
The code example below demonstrates export and import of the Polyphase Resampling Filter Bank.
int inRate=16000; // input frequency int outRate=8000; // output frequency int history; // half of filter length char fname[]="filter.flt\0"; // coefficient file name { int size,len,height; FILE *file; short *pFilter; IppsresamplingPolyphaseFixed_16s *state; history=(int)(64.0f*0.5*IPP_MAX(1.0,1.0/(double)outRate/(double)inRate))+1; ippsResamplePolyphaseFixedGetSize_16s(inRate, outRate, 2*(history-1), &size, &len, &height, ippAlgHintFast); state = (IppsResamlingPolyphaseFixed_16s*)ippsMalloc_8u(size); ippsResamplePolyphaseFixedInit_16s(inRate,outRate,2*(history-1), 0.95f, 9.0f, state, ippAlgHintFast); pFilter=ippsMalloc_16s(len*height); ippsResamplePolyphaseGetFixedFilter_16s(pFilter,len,height,state); file=fopen(fname,"wb"); fwrite(&size,sizeof(int),1,file); fwrite(&len,sizeof(int),1,file); fwrite(&height,sizeof(int),1,file); fwrite(pFilter,sizeof(short),len*height,file); fclose(file); ippsFree(pFilter); ippsFree (state); } { int size,len,height; FILE *file; short *pFilter; IppsresamplingPolyphaseFixed_16s *state; history=(int)(64.0f*0.5*IPP_MAX(1.0,1.0/(double)outRate/(double)inRate))+1; file=fopen(fname,"rb"); fread(&size,sizeof(int),1,file); fread(&len,sizeof(int),1,file); fread(&height,sizeof(int),1,file); pFilter=ippsMalloc_16s(len*height); fread(pFilter,sizeof(short),len*height,file); fclose(file); state=(IppsresamplingPolyphaseFixed_16s*)ippsMalloc_8u(size); ippsResamplePolyphaseFixedInit_16s(inRate,outRate,2*(history-1), 0.95f, 9.0f, state, ippAlgHintFast); ippsResamplePolyphaseSetFixedFilter_16s((const Ipp16s*)pFilter,len,height, (IppsresamplingPolyphaseFixed_16s*)state); ippsFree(pFilter); // use of polyphase filter … ippsFree(state); }