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