#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,
|
};
|
|
/// <summary>
|
/// ³õʼ»¯
|
/// </summary>
|
/// <returns></returns>
|
__EXPORT_FUN void* FiltersRenderInit();
|
/// <summary>
|
/// Ïú»Ù
|
/// </summary>
|
/// <param name="handle">FilterRender¾ä±ú</param>
|
__EXPORT_FUN void FilterRenderFree(void* handle);
|
|
/// <summary>
|
///¸ù¾ÝFIRϵÊýÉú³ÉƵÆ×ͼºÍÏàλͼ
|
/// </summary>
|
/// <param name="handle">FilterRender¾ä±ú</param>
|
/// <param name="coeffs">FIRÂ˲¨Æ÷ϵÊý</param>
|
/// <param name="tap">FIRÂ˲¨Æ÷½×Êý</param>
|
/// <param name="fs">²ÉÑùÂÊ</param>
|
/// <param name="f">Êä³öƵÂÊ</param>
|
/// <param name="gain">Êä³öÔöÒæ(dB)</param>
|
/// <param name="phase">Êä³öÏàλ(-180~180¶È)</param>
|
/// <param name="num">ÐèÒªÊä³öµÄƵÂʵã¸öÊý</param>
|
/// <returns>³É¹¦·µ»Ø0</returns>
|
__EXPORT_FUN int FIRDrawFreqzData(void* handle, double coeffs[], int tap, int fs
|
, double f[], double gain[], double phase[], int num);
|
|
// /// <summary>
|
// /// ×Ô¶¯Ð£×¼ÆµÂʺÍÏàλ
|
// /// </summary>
|
// /// <param name="handle">FilterRender¾ä±ú</param>
|
// /// <param name="f">Êä³öƵÂÊ</param>
|
// /// <param name="gain">ÊäÈëÊä³öÔöÒæ(dB)</param>
|
// /// <param name="phase">ÊäÈëÊä³öÏàλ(-180~180¶È)</param>
|
// /// <param name="num">ÐèÒªÊä³öµÄƵÂʵã¸öÊý</param>
|
// /// <returns>³É¹¦·µ»Ø0</returns>
|
__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);
|
|
/// <summary>
|
/// ¸ù¾ÝEQµ÷½ÚÄ¿±êÇúÏß
|
/// </summary>
|
/// <param name="handle">FilterRender¾ä±ú</param>
|
/// <param name="filter_type">EQÀàÐÍ,FIRFilterType</param>
|
/// <param name="window_type">´°ÀàÐÍ,FIRWindowType</param>
|
/// <param name="freq">EQƵÂÊ</param>
|
/// <param name="Q">QÖµ</param>
|
/// <param name="g">ÔöÒæ</param>
|
/// <param name="f">Êä³öƵÂÊ</param>
|
/// <param name="gain">Êä³öÔöÒæ(dB)</param>
|
/// <param name="phase">Êä³öÏàλ(-180~180¶È)</param>
|
/// <param name="num">ÐèÒªÊä³öµÄƵÂʵã¸öÊý</param>
|
/// <returns>³É¹¦·µ»Ø0</returns>
|
__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);
|
|
/// <summary>
|
/// »ñȡĿ±êÇúÏß¶ÔÓ¦µÄFIRϵÊý
|
/// </summary>
|
/// <param name="handle">FilterRender¾ä±ú</param>
|
/// <param name="coffefs">Ä¿±êϵÊý</param>
|
/// <returns>·µ»ØÄ¿±êϵÊý½×Êý</returns>
|
__EXPORT_FUN int FIRGetCoeffs(void* handle, double coffefs[], int windowType, double delay_ms, int tap);
|
|
/// <summary>
|
/// Çå¿Õ
|
/// </summary>
|
__EXPORT_FUN void FilterRenderReset(void* handle);
|
|
#ifdef __cplusplus
|
}
|
#endif
|
#endif
|