
Internally, it already worked on floats. This patch just changes the signature of a bunch of functions so that floats can be passed directly from the new and improved AudioBuffer without converting the data to int and back again first. (The reference data to the ApmTest.Process test had to be modified slightly; this is because the noise suppressor comes immediately after the echo canceller, which also works on floats. If I truncate to integers between the two steps, ApmTest.Process doesn't complain, but of course that's exactly the sort of thing the float conversion is supposed to let us avoid...) BUG= R=aluebs@webrtc.org, bjornv@webrtc.org, tina.legrand@webrtc.org Review URL: https://webrtc-codereview.appspot.com/13519004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@6385 4adac7df-926f-26a2-2b94-8c16560cd09d
62 lines
1.7 KiB
C
62 lines
1.7 KiB
C
/*
|
|
* Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license
|
|
* that can be found in the LICENSE file in the root of the source
|
|
* tree. An additional intellectual property rights grant can be found
|
|
* in the file PATENTS. All contributing project authors may
|
|
* be found in the AUTHORS file in the root of the source tree.
|
|
*/
|
|
|
|
#include "webrtc/modules/audio_processing/ns/include/noise_suppression.h"
|
|
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
#include "webrtc/common_audio/signal_processing/include/signal_processing_library.h"
|
|
#include "webrtc/modules/audio_processing/ns/defines.h"
|
|
#include "webrtc/modules/audio_processing/ns/ns_core.h"
|
|
|
|
int WebRtcNs_Create(NsHandle** NS_inst) {
|
|
*NS_inst = (NsHandle*) malloc(sizeof(NSinst_t));
|
|
if (*NS_inst != NULL) {
|
|
(*(NSinst_t**)NS_inst)->initFlag = 0;
|
|
return 0;
|
|
} else {
|
|
return -1;
|
|
}
|
|
|
|
}
|
|
|
|
int WebRtcNs_Free(NsHandle* NS_inst) {
|
|
free(NS_inst);
|
|
return 0;
|
|
}
|
|
|
|
|
|
int WebRtcNs_Init(NsHandle* NS_inst, uint32_t fs) {
|
|
return WebRtcNs_InitCore((NSinst_t*) NS_inst, fs);
|
|
}
|
|
|
|
int WebRtcNs_set_policy(NsHandle* NS_inst, int mode) {
|
|
return WebRtcNs_set_policy_core((NSinst_t*) NS_inst, mode);
|
|
}
|
|
|
|
|
|
int WebRtcNs_Process(NsHandle* NS_inst, float* spframe, float* spframe_H,
|
|
float* outframe, float* outframe_H) {
|
|
return WebRtcNs_ProcessCore(
|
|
(NSinst_t*) NS_inst, spframe, spframe_H, outframe, outframe_H);
|
|
}
|
|
|
|
float WebRtcNs_prior_speech_probability(NsHandle* handle) {
|
|
NSinst_t* self = (NSinst_t*) handle;
|
|
if (handle == NULL) {
|
|
return -1;
|
|
}
|
|
if (self->initFlag == 0) {
|
|
return -1;
|
|
}
|
|
return self->priorSpeechProb;
|
|
}
|