#ifndef _FILTERSRENDER_FRVAPI_HH_4749025720734027070437502
#define _FILTERSRENDER_FRVAPI_HH_4749025720734027070437502
#ifdef __cplusplus
extern "C" {
#endif
#define __EXPORT_FUN extern "C" __declspec(dllexport)
enum FIRFilterType
{
HIGHPASS,
LOWPASS,
EQ,
};
enum FIRWindowType
{
//¾ØÐδ°,w=boxcar(n)
Rectangle,
//Èý½Ç´°, w=triang(n)
Triangle,
//ººÄþ´°,w=hanning(n)
Hanning,
//ººÃ÷´°,w=hanning(n)
Hamming,
//²¼À³¿ËÂü´°,w=blackman(n)
Blackman,
//¿Èû´°,w=kaiser(n,beta)
Kaiser,
};
///
/// ³õʼ»¯
///
///
__EXPORT_FUN void* FiltersRenderInit();
///
/// Ïú»Ù
///
/// FilterRender¾ä±ú
__EXPORT_FUN void FilterRenderFree(void* handle);
///
///¸ù¾ÝFIRϵÊýÉú³ÉƵÆ×ͼºÍÏàλͼ
///
/// FilterRender¾ä±ú
/// FIRÂ˲¨Æ÷ϵÊý
/// FIRÂ˲¨Æ÷½×Êý
/// ²ÉÑùÂÊ
/// Êä³öƵÂÊ
/// Êä³öÔöÒæ(dB)
/// Êä³öÏàλ(-180~180¶È)
/// ÐèÒªÊä³öµÄƵÂʵã¸öÊý
/// ³É¹¦·µ»Ø0
__EXPORT_FUN int FIRDrawFreqzData(void* handle, double coeffs[], int tap, int fs
, double f[], double gain[], double phase[], int num);
// ///
// /// ×Ô¶¯Ð£×¼ÆµÂʺÍÏàλ
// ///
// /// FilterRender¾ä±ú
// /// Êä³öƵÂÊ
// /// ÊäÈëÊä³öÔöÒæ(dB)
// /// ÊäÈëÊä³öÏàλ(-180~180¶È)
// /// ÐèÒªÊä³öµÄƵÂʵã¸öÊý
// /// ³É¹¦·µ»Ø0
__EXPORT_FUN int FIRAutoMagCalibration(void* handle, double f[], double gain[]
, double start_freq, double end_freq, int oct, int num);
__EXPORT_FUN int FIRAutoPhaseCalibration(void* handle, double f[], double phase[]
, double start_freq, double end_freq, int oct, int num);
///
/// ¸ù¾ÝEQµ÷½ÚÄ¿±êÇúÏß
///
/// FilterRender¾ä±ú
/// EQÀàÐÍ,FIRFilterType
/// ´°ÀàÐÍ,FIRWindowType
/// EQƵÂÊ
/// QÖµ
/// ÔöÒæ
/// Êä³öƵÂÊ
/// Êä³öÔöÒæ(dB)
/// Êä³öÏàλ(-180~180¶È)
/// ÐèÒªÊä³öµÄƵÂʵã¸öÊý
/// ³É¹¦·µ»Ø0
__EXPORT_FUN int FIRAdjustFilter(void* handle, int nsection, int bypass, int filter_type
, int freq, double Q, double g, double f[], double gain[], double phase[], int num);
///
/// »ñȡĿ±êÇúÏß¶ÔÓ¦µÄFIRϵÊý
///
/// FilterRender¾ä±ú
/// Ä¿±êϵÊý
/// ·µ»ØÄ¿±êϵÊý½×Êý
__EXPORT_FUN int FIRGetCoeffs(void* handle, double coffefs[], int windowType, double delay_ms, int tap);
///
/// Çå¿Õ
///
__EXPORT_FUN void FilterRenderReset(void* handle);
#ifdef __cplusplus
}
#endif
#endif