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

Side by Side Diff: webrtc/modules/pacing/bitrate_prober.cc

Issue 1962303002: Added cluster id to PacedSender::Callback::TimeToSendPacket. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Addded probing cluster unittest. Created 4 years, 7 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/modules/pacing/bitrate_prober.h ('k') | webrtc/modules/pacing/paced_sender.h » ('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) 2014 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2014 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 17 matching lines...) Expand all
28 // bps. Result is in milliseconds. 28 // bps. Result is in milliseconds.
29 return static_cast<int>(1000ll * static_cast<int64_t>(packet_size) * 8ll / 29 return static_cast<int>(1000ll * static_cast<int64_t>(packet_size) * 8ll /
30 bitrate_bps); 30 bitrate_bps);
31 } 31 }
32 } // namespace 32 } // namespace
33 33
34 BitrateProber::BitrateProber() 34 BitrateProber::BitrateProber()
35 : probing_state_(kDisabled), 35 : probing_state_(kDisabled),
36 packet_size_last_send_(0), 36 packet_size_last_send_(0),
37 time_last_send_ms_(-1), 37 time_last_send_ms_(-1),
38 cluster_id_(0) {} 38 next_cluster_id_(0) {}
39 39
40 void BitrateProber::SetEnabled(bool enable) { 40 void BitrateProber::SetEnabled(bool enable) {
41 if (enable) { 41 if (enable) {
42 if (probing_state_ == kDisabled) { 42 if (probing_state_ == kDisabled) {
43 probing_state_ = kAllowedToProbe; 43 probing_state_ = kAllowedToProbe;
44 LOG(LS_INFO) << "Initial bandwidth probing enabled"; 44 LOG(LS_INFO) << "Initial bandwidth probing enabled";
45 } 45 }
46 } else { 46 } else {
47 probing_state_ = kDisabled; 47 probing_state_ = kDisabled;
48 LOG(LS_INFO) << "Initial bandwidth probing disabled"; 48 LOG(LS_INFO) << "Initial bandwidth probing disabled";
(...skipping 11 matching lines...) Expand all
60 // probing. 60 // probing.
61 if (packet_size < PacedSender::kMinProbePacketSize) 61 if (packet_size < PacedSender::kMinProbePacketSize)
62 return; 62 return;
63 if (probing_state_ != kAllowedToProbe) 63 if (probing_state_ != kAllowedToProbe)
64 return; 64 return;
65 // Max number of packets used for probing. 65 // Max number of packets used for probing.
66 const int kMaxNumProbes = 2; 66 const int kMaxNumProbes = 2;
67 const int kPacketsPerProbe = 5; 67 const int kPacketsPerProbe = 5;
68 const float kProbeBitrateMultipliers[kMaxNumProbes] = {3, 6}; 68 const float kProbeBitrateMultipliers[kMaxNumProbes] = {3, 6};
69 std::stringstream bitrate_log; 69 std::stringstream bitrate_log;
70 bitrate_log << "Start probing for bandwidth, bitrates:"; 70 bitrate_log << "Start probing for bandwidth, (bitrate:packets): ";
71 for (int i = 0; i < kMaxNumProbes; ++i) { 71 for (int i = 0; i < kMaxNumProbes; ++i) {
72 ProbeCluster cluster; 72 ProbeCluster cluster;
73 // We need one extra to get 5 deltas for the first probe, therefore (i == 0) 73 // We need one extra to get 5 deltas for the first probe, therefore (i == 0)
74 cluster.max_probe_packets = kPacketsPerProbe + (i == 0 ? 1 : 0); 74 cluster.max_probe_packets = kPacketsPerProbe + (i == 0 ? 1 : 0);
75 cluster.probe_bitrate_bps = kProbeBitrateMultipliers[i] * bitrate_bps; 75 cluster.probe_bitrate_bps = kProbeBitrateMultipliers[i] * bitrate_bps;
76 cluster.id = cluster_id_++; 76 cluster.id = next_cluster_id_++;
77 77
78 bitrate_log << " " << cluster.probe_bitrate_bps; 78 bitrate_log << "(" << cluster.probe_bitrate_bps << ":"
79 bitrate_log << ", num packets: " << cluster.max_probe_packets; 79 << cluster.max_probe_packets << ") ";
80 80
81 clusters_.push(cluster); 81 clusters_.push(cluster);
82 } 82 }
83 LOG(LS_INFO) << bitrate_log.str().c_str(); 83 LOG(LS_INFO) << bitrate_log.str().c_str();
84 // Set last send time to current time so TimeUntilNextProbe doesn't short 84 // Set last send time to current time so TimeUntilNextProbe doesn't short
85 // circuit due to inactivity. 85 // circuit due to inactivity.
86 time_last_send_ms_ = now_ms; 86 time_last_send_ms_ = now_ms;
87 probing_state_ = kProbing; 87 probing_state_ = kProbing;
88 } 88 }
89 89
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 if (probing_state_ != kProbing) 150 if (probing_state_ != kProbing)
151 return; 151 return;
152 if (!clusters_.empty()) { 152 if (!clusters_.empty()) {
153 ProbeCluster* cluster = &clusters_.front(); 153 ProbeCluster* cluster = &clusters_.front();
154 ++cluster->sent_probe_packets; 154 ++cluster->sent_probe_packets;
155 if (cluster->sent_probe_packets == cluster->max_probe_packets) 155 if (cluster->sent_probe_packets == cluster->max_probe_packets)
156 clusters_.pop(); 156 clusters_.pop();
157 } 157 }
158 } 158 }
159 } // namespace webrtc 159 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/pacing/bitrate_prober.h ('k') | webrtc/modules/pacing/paced_sender.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698