| 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 |