1 /* 2 * Copyright (C) 2015-2020 Alibaba Group Holding Limited 3 */ 4 #ifndef NS3_H 5 #define NS3_H 6 7 #include <stdint.h> 8 9 #ifdef __cplusplus 10 extern "C" { 11 #endif 12 13 typedef enum 14 { 15 NS3_SUPPRESSION_LOW = 0, 16 NS3_SUPPRESSION_MID = 1, 17 NS3_SUPPRESSION_HIGH = 2, 18 NS3_SUPPRESSION_VERY_HIGH = 3 19 } NS3_SUPPRESSION_MODE; 20 21 typedef struct 22 { 23 int32_t bypass; 24 NS3_SUPPRESSION_MODE mode; 25 } Ns3Config; 26 27 struct Ns3State_; 28 29 typedef struct Ns3State_ Ns3State; 30 31 #define CONSTRUCT_FUNC_NAME_A(p, c, m) p ## _ ## c ## _ ## m 32 #define CONSTRUCT_FUNC_NAME(p, c, m) CONSTRUCT_FUNC_NAME_A(p, c, m) 33 34 #ifndef NS3_IMPL 35 #define NS3_IMPL fixed 36 #endif 37 38 #define ns3_create CONSTRUCT_FUNC_NAME(ns3, NS3_IMPL, init) 39 #define ns3_destroy CONSTRUCT_FUNC_NAME(ns3, NS3_IMPL, destroy) 40 #define ns3_set_config CONSTRUCT_FUNC_NAME(ns3, NS3_IMPL, set_config) 41 #define ns3_process CONSTRUCT_FUNC_NAME(ns3, NS3_IMPL, process) 42 #define ns3_get_required_mips CONSTRUCT_FUNC_NAME(ns3, NS3_IMPL, get_required_mips) 43 44 Ns3State *ns3_create(int32_t sample_rate, int32_t frame_size, const Ns3Config *cfg); 45 46 int32_t ns3_destroy(Ns3State *st); 47 48 int32_t ns3_set_config(Ns3State *st, const Ns3Config *cfg); 49 50 int32_t ns3_process(Ns3State *st, int16_t *pcm_buf, int32_t pcm_len); 51 52 float ns3_get_required_mips(Ns3State *st); 53 54 #ifdef __cplusplus 55 } 56 #endif 57 58 #endif