Home | History | Annotate | Download | only in interface
      1 /*
      2  *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
      3  *
      4  *  Use of this source code is governed by a BSD-style license
      5  *  that can be found in the LICENSE file in the root of the source
      6  *  tree. An additional intellectual property rights grant can be found
      7  *  in the file PATENTS.  All contributing project authors may
      8  *  be found in the AUTHORS file in the root of the source tree.
      9  */
     10 
     11 #ifndef WEBRTC_MODULES_AUDIO_PROCESSING_NS_MAIN_INTERFACE_NOISE_SUPPRESSION_H_
     12 #define WEBRTC_MODULES_AUDIO_PROCESSING_NS_MAIN_INTERFACE_NOISE_SUPPRESSION_H_
     13 
     14 #include "typedefs.h"
     15 
     16 typedef struct NsHandleT NsHandle;
     17 
     18 #ifdef __cplusplus
     19 extern "C" {
     20 #endif
     21 
     22 /*
     23  * This function returns the version number of the code.
     24  *
     25  * Input:
     26  *      - version       : Pointer to a character array where the version
     27  *                        info is stored.
     28  *      - length        : Length of version.
     29  *
     30  * Return value         :  0 - Ok
     31  *                        -1 - Error (probably length is not sufficient)
     32  */
     33 int WebRtcNs_get_version(char* version, short length);
     34 
     35 
     36 /*
     37  * This function creates an instance to the noise reduction structure
     38  *
     39  * Input:
     40  *      - NS_inst       : Pointer to noise reduction instance that should be
     41  *                        created
     42  *
     43  * Output:
     44  *      - NS_inst       : Pointer to created noise reduction instance
     45  *
     46  * Return value         :  0 - Ok
     47  *                        -1 - Error
     48  */
     49 int WebRtcNs_Create(NsHandle** NS_inst);
     50 
     51 
     52 /*
     53  * This function frees the dynamic memory of a specified Noise Reduction
     54  * instance.
     55  *
     56  * Input:
     57  *      - NS_inst       : Pointer to NS instance that should be freed
     58  *
     59  * Return value         :  0 - Ok
     60  *                        -1 - Error
     61  */
     62 int WebRtcNs_Free(NsHandle* NS_inst);
     63 
     64 
     65 /*
     66  * This function initializes a NS instance
     67  *
     68  * Input:
     69  *      - NS_inst       : Instance that should be initialized
     70  *      - fs            : sampling frequency
     71  *
     72  * Output:
     73  *      - NS_inst       : Initialized instance
     74  *
     75  * Return value         :  0 - Ok
     76  *                        -1 - Error
     77  */
     78 int WebRtcNs_Init(NsHandle* NS_inst, WebRtc_UWord32 fs);
     79 
     80 /*
     81  * This changes the aggressiveness of the noise suppression method.
     82  *
     83  * Input:
     84  *      - NS_inst       : Instance that should be initialized
     85  *      - mode          : 0: Mild, 1: Medium , 2: Aggressive
     86  *
     87  * Output:
     88  *      - NS_inst       : Initialized instance
     89  *
     90  * Return value         :  0 - Ok
     91  *                        -1 - Error
     92  */
     93 int WebRtcNs_set_policy(NsHandle* NS_inst, int mode);
     94 
     95 
     96 /*
     97  * This functions does Noise Suppression for the inserted speech frame. The
     98  * input and output signals should always be 10ms (80 or 160 samples).
     99  *
    100  * Input
    101  *      - NS_inst       : NS Instance. Needs to be initiated before call.
    102  *      - spframe       : Pointer to speech frame buffer for L band
    103  *      - spframe_H     : Pointer to speech frame buffer for H band
    104  *      - fs            : sampling frequency
    105  *
    106  * Output:
    107  *      - NS_inst       : Updated NS instance
    108  *      - outframe      : Pointer to output frame for L band
    109  *      - outframe_H    : Pointer to output frame for H band
    110  *
    111  * Return value         :  0 - OK
    112  *                        -1 - Error
    113  */
    114 int WebRtcNs_Process(NsHandle* NS_inst,
    115                      short* spframe,
    116                      short* spframe_H,
    117                      short* outframe,
    118                      short* outframe_H);
    119 
    120 #ifdef __cplusplus
    121 }
    122 #endif
    123 
    124 #endif // WEBRTC_MODULES_AUDIO_PROCESSING_NS_MAIN_INTERFACE_NOISE_SUPPRESSION_H_
    125