Line data Source code
1 : /*
2 : * Copyright (c) 2016 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_AEC3_AEC3_CONSTANTS_H_
12 : #define WEBRTC_MODULES_AUDIO_PROCESSING_AEC3_AEC3_CONSTANTS_H_
13 :
14 : #include <stddef.h>
15 :
16 : namespace webrtc {
17 :
18 : constexpr size_t kFftLengthBy2 = 64;
19 : constexpr size_t kFftLengthBy2Plus1 = kFftLengthBy2 + 1;
20 : constexpr size_t kFftLength = 2 * kFftLengthBy2;
21 :
22 : constexpr size_t kMaxNumBands = 3;
23 : constexpr size_t kSubFrameLength = 80;
24 :
25 : constexpr size_t kBlockSize = kFftLengthBy2;
26 : constexpr size_t kExtendedBlockSize = 2 * kFftLengthBy2;
27 : constexpr size_t kSubBlockSize = 16;
28 :
29 0 : constexpr size_t NumBandsForRate(int sample_rate_hz) {
30 0 : return static_cast<size_t>(sample_rate_hz == 8000 ? 1
31 0 : : sample_rate_hz / 16000);
32 : }
33 0 : constexpr int LowestBandRate(int sample_rate_hz) {
34 0 : return sample_rate_hz == 8000 ? sample_rate_hz : 16000;
35 : }
36 :
37 : static_assert(1 == NumBandsForRate(8000), "Number of bands for 8 kHz");
38 : static_assert(1 == NumBandsForRate(16000), "Number of bands for 16 kHz");
39 : static_assert(2 == NumBandsForRate(32000), "Number of bands for 32 kHz");
40 : static_assert(3 == NumBandsForRate(48000), "Number of bands for 48 kHz");
41 :
42 : static_assert(8000 == LowestBandRate(8000), "Sample rate of band 0 for 8 kHz");
43 : static_assert(16000 == LowestBandRate(16000),
44 : "Sample rate of band 0 for 16 kHz");
45 : static_assert(16000 == LowestBandRate(32000),
46 : "Sample rate of band 0 for 32 kHz");
47 : static_assert(16000 == LowestBandRate(48000),
48 : "Sample rate of band 0 for 48 kHz");
49 :
50 : } // namespace webrtc
51 :
52 : #endif // WEBRTC_MODULES_AUDIO_PROCESSING_AEC3_AEC3_CONSTANTS_H_
|