OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2013 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 |
11 #include "webrtc/modules/audio_processing/transient/moving_moments.h" | 11 #include "webrtc/modules/audio_processing/transient/moving_moments.h" |
12 | 12 |
13 #include <math.h> | 13 #include <math.h> |
14 #include <string.h> | 14 #include <string.h> |
15 | 15 |
16 #include "webrtc/base/scoped_ptr.h" | 16 #include "webrtc/base/checks.h" |
17 | 17 |
18 namespace webrtc { | 18 namespace webrtc { |
19 | 19 |
20 MovingMoments::MovingMoments(size_t length) | 20 MovingMoments::MovingMoments(size_t length) |
21 : length_(length), | 21 : length_(length), |
22 queue_(), | 22 queue_(), |
23 sum_(0.0), | 23 sum_(0.0), |
24 sum_of_squares_(0.0) { | 24 sum_of_squares_(0.0) { |
25 assert(length > 0); | 25 RTC_DCHECK_GT(length, 0u); |
26 for (size_t i = 0; i < length; ++i) { | 26 for (size_t i = 0; i < length; ++i) { |
27 queue_.push(0.0); | 27 queue_.push(0.0); |
28 } | 28 } |
29 } | 29 } |
30 | 30 |
31 MovingMoments::~MovingMoments() {} | 31 MovingMoments::~MovingMoments() {} |
32 | 32 |
33 void MovingMoments::CalculateMoments(const float* in, size_t in_length, | 33 void MovingMoments::CalculateMoments(const float* in, size_t in_length, |
34 float* first, float* second) { | 34 float* first, float* second) { |
35 assert(in && in_length > 0 && first && second); | 35 RTC_DCHECK(in && in_length > 0 && first && second); |
36 | 36 |
37 for (size_t i = 0; i < in_length; ++i) { | 37 for (size_t i = 0; i < in_length; ++i) { |
38 const float old_value = queue_.front(); | 38 const float old_value = queue_.front(); |
39 queue_.pop(); | 39 queue_.pop(); |
40 queue_.push(in[i]); | 40 queue_.push(in[i]); |
41 | 41 |
42 sum_ += in[i] - old_value; | 42 sum_ += in[i] - old_value; |
43 sum_of_squares_ += in[i] * in[i] - old_value * old_value; | 43 sum_of_squares_ += in[i] * in[i] - old_value * old_value; |
44 first[i] = sum_ / length_; | 44 first[i] = sum_ / length_; |
45 second[i] = sum_of_squares_ / length_; | 45 second[i] = sum_of_squares_ / length_; |
46 } | 46 } |
47 } | 47 } |
48 | 48 |
49 } // namespace webrtc | 49 } // namespace webrtc |
OLD | NEW |