#ifndef AZP_H_
#define AZP_H_
#include "stdint.h"
typedef enum 
{
	errAZP_NoError = 0,
	errAZP_NotReady,
	errAZP_InvalidParam,
	errAZP_InvalidLicense,
	errAZP_BufferOverflow,
	errAZP_BufferTooSmall,
}AZP_STATUS;

typedef struct 
{
	int8_t *buffer1;
	int8_t *buffer2;
	int32_t buffer1_size;
	int32_t buffer2_size;
	int32_t sample_rate;
}azp_dnr_pram_t;


/// @brief DNR initialization
/// @param param Configuration parameters
/// @return License status
/// @brief DNR initialization
/// @param param Configuration parameters
/// @return License status
AZP_STATUS AI_DNR_init(azp_dnr_pram_t *pram);

/// @brief DNR processing
/// @param audio Q31 input and output
/// @return License status
AZP_STATUS AI_DNR_Processing(int32_t *audio);
/// @brief Get version number
/// @return If not licensed, returns NULL
char * AI_DNR_Version();
/// @brief   初始化
/// @param buffer 公共区buffer
/// @param buf_size 公共区buffer size
/// @param buffer2   私有区buffer
/// @param buffer2_size   私有区buffer size
/// @return 
//AZP_STATUS azp_dnr_init(int8_t *buffer, int32_t buf_size,int8_t *buffer2,int32_t buffer2_size);
/// @brief DNR 处理
/// @param audio 32bit Q31 单声道
/// @return 
//AZP_STATUS Aizip_DNR_Processing(int32_t *audio);
/// @brief 获取工作buffer大小
/// @param buf_size 
/// @param buf_size2 
void getBufferSize(int32_t *buf_size, int32_t *buf_size2);/// @brief 设置是否开启EQ ,默认开启
/// @param status 
//void setEQ_Status(int8_t status);
/// @brief 设置是否开启AGC ,默认开启
/// @param status 
//void setAGC_Status(int8_t status);
/// @brief Set the noise reduction depth
/// @param dB Range (-200 to 0 dB)
///        -200: Maximum noise reduction
///        0: No noise reduction
void setNoisy_mix_factor(float dB);
#endif // AZP_H_