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