Line data Source code
1 : /*
2 : * Copyright (c) 2012 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_VAD_POLE_ZERO_FILTER_H_
12 : #define WEBRTC_MODULES_AUDIO_PROCESSING_VAD_POLE_ZERO_FILTER_H_
13 :
14 : #include <cstddef>
15 :
16 : #include "webrtc/typedefs.h"
17 :
18 : namespace webrtc {
19 :
20 : class PoleZeroFilter {
21 : public:
22 0 : ~PoleZeroFilter() {}
23 :
24 : static PoleZeroFilter* Create(const float* numerator_coefficients,
25 : size_t order_numerator,
26 : const float* denominator_coefficients,
27 : size_t order_denominator);
28 :
29 : int Filter(const int16_t* in, size_t num_input_samples, float* output);
30 :
31 : private:
32 : PoleZeroFilter(const float* numerator_coefficients,
33 : size_t order_numerator,
34 : const float* denominator_coefficients,
35 : size_t order_denominator);
36 :
37 : static const int kMaxFilterOrder = 24;
38 :
39 : int16_t past_input_[kMaxFilterOrder * 2];
40 : float past_output_[kMaxFilterOrder * 2];
41 :
42 : float numerator_coefficients_[kMaxFilterOrder + 1];
43 : float denominator_coefficients_[kMaxFilterOrder + 1];
44 :
45 : size_t order_numerator_;
46 : size_t order_denominator_;
47 : size_t highest_order_;
48 : };
49 :
50 : } // namespace webrtc
51 :
52 : #endif // WEBRTC_MODULES_AUDIO_PROCESSING_VAD_POLE_ZERO_FILTER_H_
|