OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 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 | 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 | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
(...skipping 14 matching lines...) Expand all Loading... |
25 | 25 |
26 // This class implements the PreemptiveExpand operation. Most of the work is | 26 // This class implements the PreemptiveExpand operation. Most of the work is |
27 // done in the base class TimeStretch, which is shared with the Accelerate | 27 // done in the base class TimeStretch, which is shared with the Accelerate |
28 // operation. In the PreemptiveExpand class, the operations that are specific to | 28 // operation. In the PreemptiveExpand class, the operations that are specific to |
29 // PreemptiveExpand are implemented. | 29 // PreemptiveExpand are implemented. |
30 class PreemptiveExpand : public TimeStretch { | 30 class PreemptiveExpand : public TimeStretch { |
31 public: | 31 public: |
32 PreemptiveExpand(int sample_rate_hz, | 32 PreemptiveExpand(int sample_rate_hz, |
33 size_t num_channels, | 33 size_t num_channels, |
34 const BackgroundNoise& background_noise, | 34 const BackgroundNoise& background_noise, |
35 int overlap_samples) | 35 size_t overlap_samples) |
36 : TimeStretch(sample_rate_hz, num_channels, background_noise), | 36 : TimeStretch(sample_rate_hz, num_channels, background_noise), |
37 old_data_length_per_channel_(-1), | 37 old_data_length_per_channel_(0), |
38 overlap_samples_(overlap_samples) { | 38 overlap_samples_(overlap_samples) { |
39 } | 39 } |
40 | 40 |
41 // This method performs the actual PreemptiveExpand operation. The samples are | 41 // This method performs the actual PreemptiveExpand operation. The samples are |
42 // read from |input|, of length |input_length| elements, and are written to | 42 // read from |input|, of length |input_length| elements, and are written to |
43 // |output|. The number of samples added through time-stretching is | 43 // |output|. The number of samples added through time-stretching is |
44 // is provided in the output |length_change_samples|. The method returns | 44 // is provided in the output |length_change_samples|. The method returns |
45 // the outcome of the operation as an enumerator value. | 45 // the outcome of the operation as an enumerator value. |
46 ReturnCodes Process(const int16_t *pw16_decoded, | 46 ReturnCodes Process(const int16_t *pw16_decoded, |
47 int len, | 47 size_t len, |
48 int old_data_len, | 48 size_t old_data_len, |
49 AudioMultiVector* output, | 49 AudioMultiVector* output, |
50 int16_t* length_change_samples); | 50 size_t* length_change_samples); |
51 | 51 |
52 protected: | 52 protected: |
53 // Sets the parameters |best_correlation| and |peak_index| to suitable | 53 // Sets the parameters |best_correlation| and |peak_index| to suitable |
54 // values when the signal contains no active speech. | 54 // values when the signal contains no active speech. |
55 void SetParametersForPassiveSpeech(size_t input_length, | 55 void SetParametersForPassiveSpeech(size_t input_length, |
56 int16_t* best_correlation, | 56 int16_t* best_correlation, |
57 int* peak_index) const override; | 57 size_t* peak_index) const override; |
58 | 58 |
59 // Checks the criteria for performing the time-stretching operation and, | 59 // Checks the criteria for performing the time-stretching operation and, |
60 // if possible, performs the time-stretching. | 60 // if possible, performs the time-stretching. |
61 ReturnCodes CheckCriteriaAndStretch(const int16_t* input, | 61 ReturnCodes CheckCriteriaAndStretch(const int16_t* input, |
62 size_t input_length, | 62 size_t input_length, |
63 size_t peak_index, | 63 size_t peak_index, |
64 int16_t best_correlation, | 64 int16_t best_correlation, |
65 bool active_speech, | 65 bool active_speech, |
66 bool /*fast_mode*/, | 66 bool /*fast_mode*/, |
67 AudioMultiVector* output) const override; | 67 AudioMultiVector* output) const override; |
68 | 68 |
69 private: | 69 private: |
70 int old_data_length_per_channel_; | 70 size_t old_data_length_per_channel_; |
71 int overlap_samples_; | 71 size_t overlap_samples_; |
72 | 72 |
73 DISALLOW_COPY_AND_ASSIGN(PreemptiveExpand); | 73 DISALLOW_COPY_AND_ASSIGN(PreemptiveExpand); |
74 }; | 74 }; |
75 | 75 |
76 struct PreemptiveExpandFactory { | 76 struct PreemptiveExpandFactory { |
77 PreemptiveExpandFactory() {} | 77 PreemptiveExpandFactory() {} |
78 virtual ~PreemptiveExpandFactory() {} | 78 virtual ~PreemptiveExpandFactory() {} |
79 | 79 |
80 virtual PreemptiveExpand* Create( | 80 virtual PreemptiveExpand* Create( |
81 int sample_rate_hz, | 81 int sample_rate_hz, |
82 size_t num_channels, | 82 size_t num_channels, |
83 const BackgroundNoise& background_noise, | 83 const BackgroundNoise& background_noise, |
84 int overlap_samples) const; | 84 size_t overlap_samples) const; |
85 }; | 85 }; |
86 | 86 |
87 } // namespace webrtc | 87 } // namespace webrtc |
88 #endif // WEBRTC_MODULES_AUDIO_CODING_NETEQ_PREEMPTIVE_EXPAND_H_ | 88 #endif // WEBRTC_MODULES_AUDIO_CODING_NETEQ_PREEMPTIVE_EXPAND_H_ |
OLD | NEW |