1c55a96383497a772a307b346368133960b02ad03Eric Laurent/* 2c55a96383497a772a307b346368133960b02ad03Eric Laurent * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. 3c55a96383497a772a307b346368133960b02ad03Eric Laurent * 4c55a96383497a772a307b346368133960b02ad03Eric Laurent * Use of this source code is governed by a BSD-style license 5c55a96383497a772a307b346368133960b02ad03Eric Laurent * that can be found in the LICENSE file in the root of the source 6c55a96383497a772a307b346368133960b02ad03Eric Laurent * tree. An additional intellectual property rights grant can be found 7c55a96383497a772a307b346368133960b02ad03Eric Laurent * in the file PATENTS. All contributing project authors may 8c55a96383497a772a307b346368133960b02ad03Eric Laurent * be found in the AUTHORS file in the root of the source tree. 9c55a96383497a772a307b346368133960b02ad03Eric Laurent */ 10c55a96383497a772a307b346368133960b02ad03Eric Laurent 11c55a96383497a772a307b346368133960b02ad03Eric Laurent 12c55a96383497a772a307b346368133960b02ad03Eric Laurent// This file includes specific signal processing tools used in vad_core.c. 13c55a96383497a772a307b346368133960b02ad03Eric Laurent 14c55a96383497a772a307b346368133960b02ad03Eric Laurent#ifndef WEBRTC_COMMON_AUDIO_VAD_VAD_SP_H_ 15c55a96383497a772a307b346368133960b02ad03Eric Laurent#define WEBRTC_COMMON_AUDIO_VAD_VAD_SP_H_ 16c55a96383497a772a307b346368133960b02ad03Eric Laurent 17c55a96383497a772a307b346368133960b02ad03Eric Laurent#include "typedefs.h" 18c55a96383497a772a307b346368133960b02ad03Eric Laurent#include "vad_core.h" 19c55a96383497a772a307b346368133960b02ad03Eric Laurent 20c55a96383497a772a307b346368133960b02ad03Eric Laurent// Downsamples the signal by a factor 2, eg. 32->16 or 16->8. 21c55a96383497a772a307b346368133960b02ad03Eric Laurent// 22c55a96383497a772a307b346368133960b02ad03Eric Laurent// Inputs: 23c55a96383497a772a307b346368133960b02ad03Eric Laurent// - signal_in : Input signal. 24c55a96383497a772a307b346368133960b02ad03Eric Laurent// - in_length : Length of input signal in samples. 25c55a96383497a772a307b346368133960b02ad03Eric Laurent// 26c55a96383497a772a307b346368133960b02ad03Eric Laurent// Input & Output: 27c55a96383497a772a307b346368133960b02ad03Eric Laurent// - filter_state : Current filter states of the two all-pass filters. The 28c55a96383497a772a307b346368133960b02ad03Eric Laurent// |filter_state| is updated after all samples have been 29c55a96383497a772a307b346368133960b02ad03Eric Laurent// processed. 30c55a96383497a772a307b346368133960b02ad03Eric Laurent// 31c55a96383497a772a307b346368133960b02ad03Eric Laurent// Output: 32c55a96383497a772a307b346368133960b02ad03Eric Laurent// - signal_out : Downsampled signal (of length |in_length| / 2). 33c55a96383497a772a307b346368133960b02ad03Eric Laurentvoid WebRtcVad_Downsampling(int16_t* signal_in, 34c55a96383497a772a307b346368133960b02ad03Eric Laurent int16_t* signal_out, 35c55a96383497a772a307b346368133960b02ad03Eric Laurent int32_t* filter_state, 36c55a96383497a772a307b346368133960b02ad03Eric Laurent int in_length); 37c55a96383497a772a307b346368133960b02ad03Eric Laurent 38c55a96383497a772a307b346368133960b02ad03Eric Laurent// Updates and returns the smoothed feature minimum. As minimum we use the 39c55a96383497a772a307b346368133960b02ad03Eric Laurent// median of the five smallest feature values in a 100 frames long window. 40c55a96383497a772a307b346368133960b02ad03Eric Laurent// 41c55a96383497a772a307b346368133960b02ad03Eric Laurent// Inputs: 42c55a96383497a772a307b346368133960b02ad03Eric Laurent// - feature_value : New feature value to update with. 43c55a96383497a772a307b346368133960b02ad03Eric Laurent// - channel : Channel number. 44c55a96383497a772a307b346368133960b02ad03Eric Laurent// 45c55a96383497a772a307b346368133960b02ad03Eric Laurent// Input & Output: 46c55a96383497a772a307b346368133960b02ad03Eric Laurent// - handle : State information of the VAD. 47c55a96383497a772a307b346368133960b02ad03Eric Laurent// 48c55a96383497a772a307b346368133960b02ad03Eric Laurent// Returns: 49c55a96383497a772a307b346368133960b02ad03Eric Laurent// : Smoothed minimum value for a moving window. 50c55a96383497a772a307b346368133960b02ad03Eric Laurentint16_t WebRtcVad_FindMinimum(VadInstT* handle, 51c55a96383497a772a307b346368133960b02ad03Eric Laurent int16_t feature_value, 52c55a96383497a772a307b346368133960b02ad03Eric Laurent int channel); 53c55a96383497a772a307b346368133960b02ad03Eric Laurent 54c55a96383497a772a307b346368133960b02ad03Eric Laurent#endif // WEBRTC_COMMON_AUDIO_VAD_VAD_SP_H_ 55