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

Side by Side Diff: webrtc/video/vie_channel.cc

Issue 1616153005: Switch to use new implementation in metrics.h. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 years, 11 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
« no previous file with comments | « webrtc/video/send_statistics_proxy.cc ('k') | webrtc/video/vie_receiver.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
194 194
195 void ViEChannel::UpdateHistograms() { 195 void ViEChannel::UpdateHistograms() {
196 int64_t now = Clock::GetRealTimeClock()->TimeInMilliseconds(); 196 int64_t now = Clock::GetRealTimeClock()->TimeInMilliseconds();
197 197
198 { 198 {
199 CriticalSectionScoped cs(crit_.get()); 199 CriticalSectionScoped cs(crit_.get());
200 int64_t elapsed_sec = (now - time_of_first_rtt_ms_) / 1000; 200 int64_t elapsed_sec = (now - time_of_first_rtt_ms_) / 1000;
201 if (time_of_first_rtt_ms_ != -1 && num_rtts_ > 0 && 201 if (time_of_first_rtt_ms_ != -1 && num_rtts_ > 0 &&
202 elapsed_sec > metrics::kMinRunTimeInSeconds) { 202 elapsed_sec > metrics::kMinRunTimeInSeconds) {
203 int64_t avg_rtt_ms = (rtt_sum_ms_ + num_rtts_ / 2) / num_rtts_; 203 int64_t avg_rtt_ms = (rtt_sum_ms_ + num_rtts_ / 2) / num_rtts_;
204 RTC_HISTOGRAM_COUNTS_SPARSE_10000( 204 RTC_HISTOGRAM_COUNTS_10000(
205 "WebRTC.Video.AverageRoundTripTimeInMilliseconds", avg_rtt_ms); 205 "WebRTC.Video.AverageRoundTripTimeInMilliseconds", avg_rtt_ms);
206 } 206 }
207 } 207 }
208 208
209 if (sender_) { 209 if (sender_) {
210 RtcpPacketTypeCounter rtcp_counter; 210 RtcpPacketTypeCounter rtcp_counter;
211 GetSendRtcpPacketTypeCounter(&rtcp_counter); 211 GetSendRtcpPacketTypeCounter(&rtcp_counter);
212 int64_t elapsed_sec = rtcp_counter.TimeSinceFirstPacketInMs(now) / 1000; 212 int64_t elapsed_sec = rtcp_counter.TimeSinceFirstPacketInMs(now) / 1000;
213 if (elapsed_sec > metrics::kMinRunTimeInSeconds) { 213 if (elapsed_sec > metrics::kMinRunTimeInSeconds) {
214 RTC_HISTOGRAM_COUNTS_SPARSE_10000( 214 RTC_HISTOGRAM_COUNTS_10000("WebRTC.Video.NackPacketsReceivedPerMinute",
215 "WebRTC.Video.NackPacketsReceivedPerMinute", 215 rtcp_counter.nack_packets * 60 / elapsed_sec);
216 rtcp_counter.nack_packets * 60 / elapsed_sec); 216 RTC_HISTOGRAM_COUNTS_10000("WebRTC.Video.FirPacketsReceivedPerMinute",
217 RTC_HISTOGRAM_COUNTS_SPARSE_10000( 217 rtcp_counter.fir_packets * 60 / elapsed_sec);
218 "WebRTC.Video.FirPacketsReceivedPerMinute", 218 RTC_HISTOGRAM_COUNTS_10000("WebRTC.Video.PliPacketsReceivedPerMinute",
219 rtcp_counter.fir_packets * 60 / elapsed_sec); 219 rtcp_counter.pli_packets * 60 / elapsed_sec);
220 RTC_HISTOGRAM_COUNTS_SPARSE_10000(
221 "WebRTC.Video.PliPacketsReceivedPerMinute",
222 rtcp_counter.pli_packets * 60 / elapsed_sec);
223 if (rtcp_counter.nack_requests > 0) { 220 if (rtcp_counter.nack_requests > 0) {
224 RTC_HISTOGRAM_PERCENTAGE_SPARSE( 221 RTC_HISTOGRAM_PERCENTAGE(
225 "WebRTC.Video.UniqueNackRequestsReceivedInPercent", 222 "WebRTC.Video.UniqueNackRequestsReceivedInPercent",
226 rtcp_counter.UniqueNackRequestsInPercent()); 223 rtcp_counter.UniqueNackRequestsInPercent());
227 } 224 }
228 int fraction_lost = report_block_stats_sender_->FractionLostInPercent(); 225 int fraction_lost = report_block_stats_sender_->FractionLostInPercent();
229 if (fraction_lost != -1) { 226 if (fraction_lost != -1) {
230 RTC_HISTOGRAM_PERCENTAGE_SPARSE("WebRTC.Video.SentPacketsLostInPercent", 227 RTC_HISTOGRAM_PERCENTAGE("WebRTC.Video.SentPacketsLostInPercent",
231 fraction_lost); 228 fraction_lost);
232 } 229 }
233 } 230 }
234 231
235 StreamDataCounters rtp; 232 StreamDataCounters rtp;
236 StreamDataCounters rtx; 233 StreamDataCounters rtx;
237 GetSendStreamDataCounters(&rtp, &rtx); 234 GetSendStreamDataCounters(&rtp, &rtx);
238 StreamDataCounters rtp_rtx = rtp; 235 StreamDataCounters rtp_rtx = rtp;
239 rtp_rtx.Add(rtx); 236 rtp_rtx.Add(rtx);
240 elapsed_sec = rtp_rtx.TimeSinceFirstPacketInMs( 237 elapsed_sec = rtp_rtx.TimeSinceFirstPacketInMs(
241 Clock::GetRealTimeClock()->TimeInMilliseconds()) / 238 Clock::GetRealTimeClock()->TimeInMilliseconds()) /
242 1000; 239 1000;
243 if (elapsed_sec > metrics::kMinRunTimeInSeconds) { 240 if (elapsed_sec > metrics::kMinRunTimeInSeconds) {
244 RTC_HISTOGRAM_COUNTS_SPARSE_100000( 241 RTC_HISTOGRAM_COUNTS_100000(
245 "WebRTC.Video.BitrateSentInKbps", 242 "WebRTC.Video.BitrateSentInKbps",
246 static_cast<int>(rtp_rtx.transmitted.TotalBytes() * 8 / elapsed_sec / 243 static_cast<int>(rtp_rtx.transmitted.TotalBytes() * 8 / elapsed_sec /
247 1000)); 244 1000));
248 RTC_HISTOGRAM_COUNTS_SPARSE_10000( 245 RTC_HISTOGRAM_COUNTS_10000(
249 "WebRTC.Video.MediaBitrateSentInKbps", 246 "WebRTC.Video.MediaBitrateSentInKbps",
250 static_cast<int>(rtp.MediaPayloadBytes() * 8 / elapsed_sec / 1000)); 247 static_cast<int>(rtp.MediaPayloadBytes() * 8 / elapsed_sec / 1000));
251 RTC_HISTOGRAM_COUNTS_SPARSE_10000( 248 RTC_HISTOGRAM_COUNTS_10000(
252 "WebRTC.Video.PaddingBitrateSentInKbps", 249 "WebRTC.Video.PaddingBitrateSentInKbps",
253 static_cast<int>(rtp_rtx.transmitted.padding_bytes * 8 / elapsed_sec / 250 static_cast<int>(rtp_rtx.transmitted.padding_bytes * 8 / elapsed_sec /
254 1000)); 251 1000));
255 RTC_HISTOGRAM_COUNTS_SPARSE_10000( 252 RTC_HISTOGRAM_COUNTS_10000(
256 "WebRTC.Video.RetransmittedBitrateSentInKbps", 253 "WebRTC.Video.RetransmittedBitrateSentInKbps",
257 static_cast<int>(rtp_rtx.retransmitted.TotalBytes() * 8 / 254 static_cast<int>(rtp_rtx.retransmitted.TotalBytes() * 8 /
258 elapsed_sec / 1000)); 255 elapsed_sec / 1000));
259 if (rtp_rtcp_modules_[0]->RtxSendStatus() != kRtxOff) { 256 if (rtp_rtcp_modules_[0]->RtxSendStatus() != kRtxOff) {
260 RTC_HISTOGRAM_COUNTS_SPARSE_10000( 257 RTC_HISTOGRAM_COUNTS_10000(
261 "WebRTC.Video.RtxBitrateSentInKbps", 258 "WebRTC.Video.RtxBitrateSentInKbps",
262 static_cast<int>(rtx.transmitted.TotalBytes() * 8 / elapsed_sec / 259 static_cast<int>(rtx.transmitted.TotalBytes() * 8 / elapsed_sec /
263 1000)); 260 1000));
264 } 261 }
265 bool fec_enabled = false; 262 bool fec_enabled = false;
266 uint8_t pltype_red; 263 uint8_t pltype_red;
267 uint8_t pltype_fec; 264 uint8_t pltype_fec;
268 rtp_rtcp_modules_[0]->GenericFECStatus(&fec_enabled, &pltype_red, 265 rtp_rtcp_modules_[0]->GenericFECStatus(&fec_enabled, &pltype_red,
269 &pltype_fec); 266 &pltype_fec);
270 if (fec_enabled) { 267 if (fec_enabled) {
271 RTC_HISTOGRAM_COUNTS_SPARSE_10000( 268 RTC_HISTOGRAM_COUNTS_10000("WebRTC.Video.FecBitrateSentInKbps",
272 "WebRTC.Video.FecBitrateSentInKbps", 269 static_cast<int>(rtp_rtx.fec.TotalBytes() *
273 static_cast<int>(rtp_rtx.fec.TotalBytes() * 8 / elapsed_sec / 270 8 / elapsed_sec / 1000));
274 1000));
275 } 271 }
276 } 272 }
277 } else if (vie_receiver_.GetRemoteSsrc() > 0) { 273 } else if (vie_receiver_.GetRemoteSsrc() > 0) {
278 // Get receive stats if we are receiving packets, i.e. there is a remote 274 // Get receive stats if we are receiving packets, i.e. there is a remote
279 // ssrc. 275 // ssrc.
280 RtcpPacketTypeCounter rtcp_counter; 276 RtcpPacketTypeCounter rtcp_counter;
281 GetReceiveRtcpPacketTypeCounter(&rtcp_counter); 277 GetReceiveRtcpPacketTypeCounter(&rtcp_counter);
282 int64_t elapsed_sec = rtcp_counter.TimeSinceFirstPacketInMs(now) / 1000; 278 int64_t elapsed_sec = rtcp_counter.TimeSinceFirstPacketInMs(now) / 1000;
283 if (elapsed_sec > metrics::kMinRunTimeInSeconds) { 279 if (elapsed_sec > metrics::kMinRunTimeInSeconds) {
284 RTC_HISTOGRAM_COUNTS_SPARSE_10000( 280 RTC_HISTOGRAM_COUNTS_10000("WebRTC.Video.NackPacketsSentPerMinute",
285 "WebRTC.Video.NackPacketsSentPerMinute", 281 rtcp_counter.nack_packets * 60 / elapsed_sec);
286 rtcp_counter.nack_packets * 60 / elapsed_sec); 282 RTC_HISTOGRAM_COUNTS_10000("WebRTC.Video.FirPacketsSentPerMinute",
287 RTC_HISTOGRAM_COUNTS_SPARSE_10000( 283 rtcp_counter.fir_packets * 60 / elapsed_sec);
288 "WebRTC.Video.FirPacketsSentPerMinute", 284 RTC_HISTOGRAM_COUNTS_10000("WebRTC.Video.PliPacketsSentPerMinute",
289 rtcp_counter.fir_packets * 60 / elapsed_sec); 285 rtcp_counter.pli_packets * 60 / elapsed_sec);
290 RTC_HISTOGRAM_COUNTS_SPARSE_10000(
291 "WebRTC.Video.PliPacketsSentPerMinute",
292 rtcp_counter.pli_packets * 60 / elapsed_sec);
293 if (rtcp_counter.nack_requests > 0) { 286 if (rtcp_counter.nack_requests > 0) {
294 RTC_HISTOGRAM_PERCENTAGE_SPARSE( 287 RTC_HISTOGRAM_PERCENTAGE("WebRTC.Video.UniqueNackRequestsSentInPercent",
295 "WebRTC.Video.UniqueNackRequestsSentInPercent", 288 rtcp_counter.UniqueNackRequestsInPercent());
296 rtcp_counter.UniqueNackRequestsInPercent());
297 } 289 }
298 } 290 }
299 291
300 StreamDataCounters rtp; 292 StreamDataCounters rtp;
301 StreamDataCounters rtx; 293 StreamDataCounters rtx;
302 GetReceiveStreamDataCounters(&rtp, &rtx); 294 GetReceiveStreamDataCounters(&rtp, &rtx);
303 StreamDataCounters rtp_rtx = rtp; 295 StreamDataCounters rtp_rtx = rtp;
304 rtp_rtx.Add(rtx); 296 rtp_rtx.Add(rtx);
305 elapsed_sec = rtp_rtx.TimeSinceFirstPacketInMs(now) / 1000; 297 elapsed_sec = rtp_rtx.TimeSinceFirstPacketInMs(now) / 1000;
306 if (elapsed_sec > metrics::kMinRunTimeInSeconds) { 298 if (elapsed_sec > metrics::kMinRunTimeInSeconds) {
307 RTC_HISTOGRAM_COUNTS_SPARSE_10000( 299 RTC_HISTOGRAM_COUNTS_10000(
308 "WebRTC.Video.BitrateReceivedInKbps", 300 "WebRTC.Video.BitrateReceivedInKbps",
309 static_cast<int>(rtp_rtx.transmitted.TotalBytes() * 8 / elapsed_sec / 301 static_cast<int>(rtp_rtx.transmitted.TotalBytes() * 8 / elapsed_sec /
310 1000)); 302 1000));
311 RTC_HISTOGRAM_COUNTS_SPARSE_10000( 303 RTC_HISTOGRAM_COUNTS_10000(
312 "WebRTC.Video.MediaBitrateReceivedInKbps", 304 "WebRTC.Video.MediaBitrateReceivedInKbps",
313 static_cast<int>(rtp.MediaPayloadBytes() * 8 / elapsed_sec / 1000)); 305 static_cast<int>(rtp.MediaPayloadBytes() * 8 / elapsed_sec / 1000));
314 RTC_HISTOGRAM_COUNTS_SPARSE_10000( 306 RTC_HISTOGRAM_COUNTS_10000(
315 "WebRTC.Video.PaddingBitrateReceivedInKbps", 307 "WebRTC.Video.PaddingBitrateReceivedInKbps",
316 static_cast<int>(rtp_rtx.transmitted.padding_bytes * 8 / elapsed_sec / 308 static_cast<int>(rtp_rtx.transmitted.padding_bytes * 8 / elapsed_sec /
317 1000)); 309 1000));
318 RTC_HISTOGRAM_COUNTS_SPARSE_10000( 310 RTC_HISTOGRAM_COUNTS_10000(
319 "WebRTC.Video.RetransmittedBitrateReceivedInKbps", 311 "WebRTC.Video.RetransmittedBitrateReceivedInKbps",
320 static_cast<int>(rtp_rtx.retransmitted.TotalBytes() * 8 / 312 static_cast<int>(rtp_rtx.retransmitted.TotalBytes() * 8 /
321 elapsed_sec / 1000)); 313 elapsed_sec / 1000));
322 uint32_t ssrc = 0; 314 uint32_t ssrc = 0;
323 if (vie_receiver_.GetRtxSsrc(&ssrc)) { 315 if (vie_receiver_.GetRtxSsrc(&ssrc)) {
324 RTC_HISTOGRAM_COUNTS_SPARSE_10000( 316 RTC_HISTOGRAM_COUNTS_10000(
325 "WebRTC.Video.RtxBitrateReceivedInKbps", 317 "WebRTC.Video.RtxBitrateReceivedInKbps",
326 static_cast<int>(rtx.transmitted.TotalBytes() * 8 / elapsed_sec / 318 static_cast<int>(rtx.transmitted.TotalBytes() * 8 / elapsed_sec /
327 1000)); 319 1000));
328 } 320 }
329 if (vie_receiver_.IsFecEnabled()) { 321 if (vie_receiver_.IsFecEnabled()) {
330 RTC_HISTOGRAM_COUNTS_SPARSE_10000( 322 RTC_HISTOGRAM_COUNTS_10000("WebRTC.Video.FecBitrateReceivedInKbps",
331 "WebRTC.Video.FecBitrateReceivedInKbps", 323 static_cast<int>(rtp_rtx.fec.TotalBytes() *
332 static_cast<int>(rtp_rtx.fec.TotalBytes() * 8 / elapsed_sec / 324 8 / elapsed_sec / 1000));
333 1000));
334 } 325 }
335 } 326 }
336 } 327 }
337 } 328 }
338 329
339 int32_t ViEChannel::SetSendCodec(const VideoCodec& video_codec, 330 int32_t ViEChannel::SetSendCodec(const VideoCodec& video_codec,
340 bool new_stream) { 331 bool new_stream) {
341 RTC_DCHECK(sender_); 332 RTC_DCHECK(sender_);
342 if (video_codec.codecType == kVideoCodecRED || 333 if (video_codec.codecType == kVideoCodecRED ||
343 video_codec.codecType == kVideoCodecULPFEC) { 334 video_codec.codecType == kVideoCodecULPFEC) {
(...skipping 864 matching lines...) Expand 10 before | Expand all | Expand 10 after
1208 CriticalSectionScoped cs(crit_.get()); 1199 CriticalSectionScoped cs(crit_.get());
1209 receive_stats_callback_ = receive_statistics_proxy; 1200 receive_stats_callback_ = receive_statistics_proxy;
1210 } 1201 }
1211 1202
1212 void ViEChannel::SetIncomingVideoStream( 1203 void ViEChannel::SetIncomingVideoStream(
1213 IncomingVideoStream* incoming_video_stream) { 1204 IncomingVideoStream* incoming_video_stream) {
1214 CriticalSectionScoped cs(crit_.get()); 1205 CriticalSectionScoped cs(crit_.get());
1215 incoming_video_stream_ = incoming_video_stream; 1206 incoming_video_stream_ = incoming_video_stream;
1216 } 1207 }
1217 } // namespace webrtc 1208 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/video/send_statistics_proxy.cc ('k') | webrtc/video/vie_receiver.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698