1 /* 2 * Copyright (C) 2015-2020 Alibaba Group Holding Limited 3 */ 4 #ifndef __LEFTRIGHT_DENOISE_H__ 5 #define __LEFTRIGHT_DENOISE_H__ 6 7 #include <stdint.h> 8 #include "ae_macros.h" 9 10 #ifdef __cplusplus 11 extern "C" { 12 #endif 13 14 typedef struct { 15 int32_t bypass; 16 float delay_taps; // MIC L/R delay samples. 0: 适用于麦克距离为<2cm; 1: 适用于麦克距离为2cm左右; 2: 适用于麦克距离为4cm左右 17 int32_t freq_smooth_enable; // 1: 频域滤波打开; 0: 频域滤波关闭; 默认打开 18 int32_t wnr_enable; // wind noise reduction enable 19 int32_t delay_enable; 20 } LeftRightDenoiseConfig; 21 22 struct LeftRightDenoiseState_; 23 24 typedef struct LeftRightDenoiseState_ LeftRightDenoiseState; 25 26 #ifndef LEFTRIGHT_DENOISE_IMPL 27 #define LEFTRIGHT_DENOISE_IMPL float 28 #endif 29 30 #define leftright_denoise_create CONSTRUCT_FUNC_NAME(leftright_denoise, LEFTRIGHT_DENOISE_IMPL, create) 31 #define leftright_denoise_destroy CONSTRUCT_FUNC_NAME(leftright_denoise, LEFTRIGHT_DENOISE_IMPL, destroy) 32 #define leftright_denoise_set_config CONSTRUCT_FUNC_NAME(leftright_denoise, LEFTRIGHT_DENOISE_IMPL, set_config) 33 #define leftright_denoise_process CONSTRUCT_FUNC_NAME(leftright_denoise, LEFTRIGHT_DENOISE_IMPL, process) 34 #define leftright_denoise_get_delay CONSTRUCT_FUNC_NAME(leftright_denoise, LEFTRIGHT_DENOISE_IMPL, get_delay) 35 36 LeftRightDenoiseState *leftright_denoise_create(int32_t sample_rate, int32_t frame_size, const LeftRightDenoiseConfig *cfg); 37 38 int32_t leftright_denoise_destroy(LeftRightDenoiseState *st); 39 40 int32_t leftright_denoise_set_config(LeftRightDenoiseState *st, const LeftRightDenoiseConfig *cfg); 41 42 int32_t leftright_denoise_process(LeftRightDenoiseState *st, short *pcm_buf, int32_t pcm_len, short *out_buf); 43 44 int32_t leftright_denoise_get_delay(LeftRightDenoiseState *st); 45 46 #ifdef __cplusplus 47 } 48 #endif 49 50 #endif 51