Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(749)

Side by Side Diff: webrtc/modules/audio_coding/neteq/statistics_calculator.cc

Issue 1228843002: Update audio code to use size_t more correctly, (Closed) Base URL: https://chromium.googlesource.com/external/webrtc@master
Patch Set: Resync Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 lost_timestamps_ = 0; 47 lost_timestamps_ = 0;
48 timestamps_since_last_report_ = 0; 48 timestamps_since_last_report_ = 0;
49 } 49 }
50 50
51 void StatisticsCalculator::ResetWaitingTimeStatistics() { 51 void StatisticsCalculator::ResetWaitingTimeStatistics() {
52 memset(waiting_times_, 0, kLenWaitingTimes * sizeof(waiting_times_[0])); 52 memset(waiting_times_, 0, kLenWaitingTimes * sizeof(waiting_times_[0]));
53 len_waiting_times_ = 0; 53 len_waiting_times_ = 0;
54 next_waiting_time_index_ = 0; 54 next_waiting_time_index_ = 0;
55 } 55 }
56 56
57 void StatisticsCalculator::ExpandedVoiceSamples(int num_samples) { 57 void StatisticsCalculator::ExpandedVoiceSamples(size_t num_samples) {
58 expanded_speech_samples_ += num_samples; 58 expanded_speech_samples_ += num_samples;
59 } 59 }
60 60
61 void StatisticsCalculator::ExpandedNoiseSamples(int num_samples) { 61 void StatisticsCalculator::ExpandedNoiseSamples(size_t num_samples) {
62 expanded_noise_samples_ += num_samples; 62 expanded_noise_samples_ += num_samples;
63 } 63 }
64 64
65 void StatisticsCalculator::PreemptiveExpandedSamples(int num_samples) { 65 void StatisticsCalculator::PreemptiveExpandedSamples(size_t num_samples) {
66 preemptive_samples_ += num_samples; 66 preemptive_samples_ += num_samples;
67 } 67 }
68 68
69 void StatisticsCalculator::AcceleratedSamples(int num_samples) { 69 void StatisticsCalculator::AcceleratedSamples(size_t num_samples) {
70 accelerate_samples_ += num_samples; 70 accelerate_samples_ += num_samples;
71 } 71 }
72 72
73 void StatisticsCalculator::AddZeros(int num_samples) { 73 void StatisticsCalculator::AddZeros(size_t num_samples) {
74 added_zero_samples_ += num_samples; 74 added_zero_samples_ += num_samples;
75 } 75 }
76 76
77 void StatisticsCalculator::PacketsDiscarded(int num_packets) { 77 void StatisticsCalculator::PacketsDiscarded(size_t num_packets) {
78 discarded_packets_ += num_packets; 78 discarded_packets_ += num_packets;
79 } 79 }
80 80
81 void StatisticsCalculator::LostSamples(int num_samples) { 81 void StatisticsCalculator::LostSamples(size_t num_samples) {
82 lost_timestamps_ += num_samples; 82 lost_timestamps_ += num_samples;
83 } 83 }
84 84
85 void StatisticsCalculator::IncreaseCounter(int num_samples, int fs_hz) { 85 void StatisticsCalculator::IncreaseCounter(size_t num_samples, int fs_hz) {
86 timestamps_since_last_report_ += static_cast<uint32_t>(num_samples); 86 timestamps_since_last_report_ += static_cast<uint32_t>(num_samples);
87 if (timestamps_since_last_report_ > 87 if (timestamps_since_last_report_ >
88 static_cast<uint32_t>(fs_hz * kMaxReportPeriod)) { 88 static_cast<uint32_t>(fs_hz * kMaxReportPeriod)) {
89 lost_timestamps_ = 0; 89 lost_timestamps_ = 0;
90 timestamps_since_last_report_ = 0; 90 timestamps_since_last_report_ = 0;
91 discarded_packets_ = 0; 91 discarded_packets_ = 0;
92 } 92 }
93 } 93 }
94 94
95 void StatisticsCalculator::SecondaryDecodedSamples(int num_samples) { 95 void StatisticsCalculator::SecondaryDecodedSamples(int num_samples) {
96 secondary_decoded_samples_ += num_samples; 96 secondary_decoded_samples_ += num_samples;
97 } 97 }
98 98
99 void StatisticsCalculator::StoreWaitingTime(int waiting_time_ms) { 99 void StatisticsCalculator::StoreWaitingTime(int waiting_time_ms) {
100 assert(next_waiting_time_index_ < kLenWaitingTimes); 100 assert(next_waiting_time_index_ < kLenWaitingTimes);
101 waiting_times_[next_waiting_time_index_] = waiting_time_ms; 101 waiting_times_[next_waiting_time_index_] = waiting_time_ms;
102 next_waiting_time_index_++; 102 next_waiting_time_index_++;
103 if (next_waiting_time_index_ >= kLenWaitingTimes) { 103 if (next_waiting_time_index_ >= kLenWaitingTimes) {
104 next_waiting_time_index_ = 0; 104 next_waiting_time_index_ = 0;
105 } 105 }
106 if (len_waiting_times_ < kLenWaitingTimes) { 106 if (len_waiting_times_ < kLenWaitingTimes) {
107 len_waiting_times_++; 107 len_waiting_times_++;
108 } 108 }
109 } 109 }
110 110
111 void StatisticsCalculator::GetNetworkStatistics( 111 void StatisticsCalculator::GetNetworkStatistics(
112 int fs_hz, 112 int fs_hz,
113 int num_samples_in_buffers, 113 size_t num_samples_in_buffers,
114 int samples_per_packet, 114 size_t samples_per_packet,
115 const DelayManager& delay_manager, 115 const DelayManager& delay_manager,
116 const DecisionLogic& decision_logic, 116 const DecisionLogic& decision_logic,
117 NetEqNetworkStatistics *stats) { 117 NetEqNetworkStatistics *stats) {
118 if (fs_hz <= 0 || !stats) { 118 if (fs_hz <= 0 || !stats) {
119 assert(false); 119 assert(false);
120 return; 120 return;
121 } 121 }
122 122
123 stats->added_zero_samples = added_zero_samples_; 123 stats->added_zero_samples = added_zero_samples_;
124 stats->current_buffer_size_ms = 124 stats->current_buffer_size_ms =
125 static_cast<uint16_t>(num_samples_in_buffers * 1000 / fs_hz); 125 static_cast<uint16_t>(num_samples_in_buffers * 1000 / fs_hz);
126 const int ms_per_packet = decision_logic.packet_length_samples() / 126 const int ms_per_packet = static_cast<int>(
hlundin-webrtc 2015/08/10 11:30:01 rtc::checked_cast
Peter Kasting 2015/08/17 22:49:47 Done.
127 (fs_hz / 1000); 127 decision_logic.packet_length_samples() / (fs_hz / 1000));
128 stats->preferred_buffer_size_ms = (delay_manager.TargetLevel() >> 8) * 128 stats->preferred_buffer_size_ms = (delay_manager.TargetLevel() >> 8) *
129 ms_per_packet; 129 ms_per_packet;
130 stats->jitter_peaks_found = delay_manager.PeakFound(); 130 stats->jitter_peaks_found = delay_manager.PeakFound();
131 stats->clockdrift_ppm = delay_manager.AverageIAT(); 131 stats->clockdrift_ppm = delay_manager.AverageIAT();
132 132
133 stats->packet_loss_rate = 133 stats->packet_loss_rate =
134 CalculateQ14Ratio(lost_timestamps_, timestamps_since_last_report_); 134 CalculateQ14Ratio(lost_timestamps_, timestamps_since_last_report_);
135 135
136 const unsigned discarded_samples = discarded_packets_ * samples_per_packet; 136 const size_t discarded_samples = discarded_packets_ * samples_per_packet;
137 stats->packet_discard_rate = 137 stats->packet_discard_rate =
138 CalculateQ14Ratio(discarded_samples, timestamps_since_last_report_); 138 CalculateQ14Ratio(discarded_samples, timestamps_since_last_report_);
139 139
140 stats->accelerate_rate = 140 stats->accelerate_rate =
141 CalculateQ14Ratio(accelerate_samples_, timestamps_since_last_report_); 141 CalculateQ14Ratio(accelerate_samples_, timestamps_since_last_report_);
142 142
143 stats->preemptive_rate = 143 stats->preemptive_rate =
144 CalculateQ14Ratio(preemptive_samples_, timestamps_since_last_report_); 144 CalculateQ14Ratio(preemptive_samples_, timestamps_since_last_report_);
145 145
146 stats->expand_rate = 146 stats->expand_rate =
(...skipping 14 matching lines...) Expand all
161 } 161 }
162 162
163 void StatisticsCalculator::WaitingTimes(std::vector<int>* waiting_times) { 163 void StatisticsCalculator::WaitingTimes(std::vector<int>* waiting_times) {
164 if (!waiting_times) { 164 if (!waiting_times) {
165 return; 165 return;
166 } 166 }
167 waiting_times->assign(waiting_times_, waiting_times_ + len_waiting_times_); 167 waiting_times->assign(waiting_times_, waiting_times_ + len_waiting_times_);
168 ResetWaitingTimeStatistics(); 168 ResetWaitingTimeStatistics();
169 } 169 }
170 170
171 uint16_t StatisticsCalculator::CalculateQ14Ratio(uint32_t numerator, 171 uint16_t StatisticsCalculator::CalculateQ14Ratio(size_t numerator,
172 uint32_t denominator) { 172 uint32_t denominator) {
173 if (numerator == 0) { 173 if (numerator == 0) {
174 return 0; 174 return 0;
175 } else if (numerator < denominator) { 175 } else if (numerator < denominator) {
176 // Ratio must be smaller than 1 in Q14. 176 // Ratio must be smaller than 1 in Q14.
177 assert((numerator << 14) / denominator < (1 << 14)); 177 assert((numerator << 14) / denominator < (1 << 14));
178 return static_cast<uint16_t>((numerator << 14) / denominator); 178 return static_cast<uint16_t>((numerator << 14) / denominator);
179 } else { 179 } else {
180 // Will not produce a ratio larger than 1, since this is probably an error. 180 // Will not produce a ratio larger than 1, since this is probably an error.
181 return 1 << 14; 181 return 1 << 14;
182 } 182 }
183 } 183 }
184 184
185 } // namespace webrtc 185 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698