1470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com/* 2b9d7d934deef2faafc6e0901d0891c93ca73b350andrew@webrtc.org * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 3470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * 4470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * Use of this source code is governed by a BSD-style license 5470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * that can be found in the LICENSE file in the root of the source 6470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * tree. An additional intellectual property rights grant can be found 7470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * in the file PATENTS. All contributing project authors may 8470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * be found in the AUTHORS file in the root of the source tree. 9470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com */ 10470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 119b72af94cd61782ada88f777b07854daf9657bb2Henrik Kjellander#ifndef WEBRTC_MODULES_AUDIO_PROCESSING_NS_NOISE_SUPPRESSION_X_H_ 129b72af94cd61782ada88f777b07854daf9657bb2Henrik Kjellander#define WEBRTC_MODULES_AUDIO_PROCESSING_NS_NOISE_SUPPRESSION_X_H_ 13470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 147fad4b8c9f1e9a6e3de9962fb74d4953b4f1bb03pbos@webrtc.org#include "webrtc/typedefs.h" 15470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 16470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comtypedef struct NsxHandleT NsxHandle; 17470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 18470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com#ifdef __cplusplus 19470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comextern "C" { 20470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com#endif 21470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 22470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com/* 239345e86551a0e59e77dfee6eed3e2fe2a833b269Bjorn Volcker * This function creates an instance of the fixed point Noise Suppression. 24470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com */ 259345e86551a0e59e77dfee6eed3e2fe2a833b269Bjorn VolckerNsxHandle* WebRtcNsx_Create(); 26470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 27470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com/* 28470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * This function frees the dynamic memory of a specified Noise Suppression 29470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * instance. 30470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * 31470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * Input: 32470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * - nsxInst : Pointer to NS instance that should be freed 33470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com */ 34f6a99e63b6e18d3b3db25e0059a4979743046f31Bjorn Volckervoid WebRtcNsx_Free(NsxHandle* nsxInst); 35470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 36470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com/* 37470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * This function initializes a NS instance 38470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * 39470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * Input: 40470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * - nsxInst : Instance that should be initialized 41470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * - fs : sampling frequency 42470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * 43470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * Output: 44470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * - nsxInst : Initialized instance 45470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * 46470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * Return value : 0 - Ok 47470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * -1 - Error 48470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com */ 49b7192b82476d00384fdc153e6a09a6ac53cef67bpbos@webrtc.orgint WebRtcNsx_Init(NsxHandle* nsxInst, uint32_t fs); 50470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 51470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com/* 52470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * This changes the aggressiveness of the noise suppression method. 53470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * 54470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * Input: 55470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * - nsxInst : Instance that should be initialized 56470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * - mode : 0: Mild, 1: Medium , 2: Aggressive 57470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * 58470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * Output: 59470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * - nsxInst : Initialized instance 60470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * 61470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * Return value : 0 - Ok 62470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * -1 - Error 63470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com */ 64af57de006ac9dbb7b25bf83e1bae2d8da4359923kma@webrtc.orgint WebRtcNsx_set_policy(NsxHandle* nsxInst, int mode); 65470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 66470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com/* 67470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * This functions does noise suppression for the inserted speech frame. The 68470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * input and output signals should always be 10ms (80 or 160 samples). 69470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * 70470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * Input 71470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * - nsxInst : NSx instance. Needs to be initiated before call. 72c5ebbd98f5996db0defbbfc14f5ca41e620bd7e4aluebs@webrtc.org * - speechFrame : Pointer to speech frame buffer for each band 73c5ebbd98f5996db0defbbfc14f5ca41e620bd7e4aluebs@webrtc.org * - num_bands : Number of bands 74470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * 75470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * Output: 76470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * - nsxInst : Updated NSx instance 77c5ebbd98f5996db0defbbfc14f5ca41e620bd7e4aluebs@webrtc.org * - outFrame : Pointer to output frame for each band 78470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com */ 79c5ebbd98f5996db0defbbfc14f5ca41e620bd7e4aluebs@webrtc.orgvoid WebRtcNsx_Process(NsxHandle* nsxInst, 80c5ebbd98f5996db0defbbfc14f5ca41e620bd7e4aluebs@webrtc.org const short* const* speechFrame, 81c5ebbd98f5996db0defbbfc14f5ca41e620bd7e4aluebs@webrtc.org int num_bands, 82c5ebbd98f5996db0defbbfc14f5ca41e620bd7e4aluebs@webrtc.org short* const* outFrame); 83470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 84470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com#ifdef __cplusplus 85470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com} 86470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com#endif 87470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 889b72af94cd61782ada88f777b07854daf9657bb2Henrik Kjellander#endif // WEBRTC_MODULES_AUDIO_PROCESSING_NS_NOISE_SUPPRESSION_X_H_ 89