1 #ifndef TRIPLE_MIC_DENOISE3_H
2 #define TRIPLE_MIC_DENOISE3_H
3 
4 #include <stdint.h>
5 #include "speech_config.h"
6 
7 typedef struct
8 {
9     int32_t bypass;
10     int32_t endfire_enable;
11     int32_t broadside_enable;
12 
13     // endfire beamforming config
14     float delay_taps;
15     int32_t freq_smooth_enable;
16     int32_t wnr_enable;
17 
18     // broadsize beamforming config
19 } TripleMicDenoise3Config;
20 
21 struct TripleMicDenoise3State_;
22 
23 typedef struct TripleMicDenoise3State_ TripleMicDenoise3State;
24 
25 TripleMicDenoise3State *triple_mic_denoise3_init(int32_t sample_rate, int32_t frame_size, const TripleMicDenoise3Config *cfg);
26 
27 void triple_mic_denoise3_destroy(TripleMicDenoise3State *st);
28 
29 // accept 3 channel interleaved pcm stream, ch0 is main mic, ch1 is endfire reference mic, ch2 is broadside reference mic
30 int32_t triple_mic_denoise3_process(TripleMicDenoise3State *st, speech_data_t *pcm_buf, int32_t pcm_len, speech_data_t *out_buf);
31 
32 float triple_mic_denoise3_get_required_mips(TripleMicDenoise3State *st);
33 
34 #endif