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

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

Issue 2613543003: Fix BitrateProber to match the requested bitrate more precisely (Closed)
Patch Set: Created 3 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
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 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 kInactive, 65 kInactive,
66 // Probe cluster is filled with the set of data rates to be probed and 66 // Probe cluster is filled with the set of data rates to be probed and
67 // probes are being sent. 67 // probes are being sent.
68 kActive, 68 kActive,
69 // Probing is enabled, but currently suspended until an explicit trigger 69 // Probing is enabled, but currently suspended until an explicit trigger
70 // to start probing again. 70 // to start probing again.
71 kSuspended, 71 kSuspended,
72 }; 72 };
73 73
74 // A probe cluster consists of a set of probes. Each probe in turn can be 74 // A probe cluster consists of a set of probes. Each probe in turn can be
75 // divided into a number of packets to accomodate the MTU on the network. 75 // divided into a number of packets to accommodate the MTU on the network.
76 struct ProbeCluster { 76 struct ProbeCluster {
77 int max_probes = 0; 77 int max_probes = 0;
78 int sent_probes = 0;
79 int probe_bitrate_bps = 0; 78 int probe_bitrate_bps = 0;
80 int id = -1; 79 int id = -1;
80
81 int sent_probes = 0;
82 int bytes_sent = 0;
83 int64_t time_started_ms = -1;
81 }; 84 };
82 85
83 // Resets the state of the prober and clears any cluster/timing data tracked. 86 // Resets the state of the prober and clears any cluster/timing data tracked.
84 void ResetState(); 87 void ResetState();
85 88
89 int64_t GetNextProbeTime(const ProbeCluster& cluster);
90
86 ProbingState probing_state_; 91 ProbingState probing_state_;
92
87 // Probe bitrate per packet. These are used to compute the delta relative to 93 // Probe bitrate per packet. These are used to compute the delta relative to
88 // the previous probe packet based on the size and time when that packet was 94 // the previous probe packet based on the size and time when that packet was
89 // sent. 95 // sent.
90 std::queue<ProbeCluster> clusters_; 96 std::queue<ProbeCluster> clusters_;
91 // A probe can include one or more packets. 97
92 size_t probe_size_last_sent_; 98 // Time the next probe should be sent when in kActive state.
93 // The last time a probe was sent. 99 int64_t next_probe_time_ms_;
94 int64_t time_last_probe_sent_ms_; 100
95 int next_cluster_id_; 101 int next_cluster_id_;
96 }; 102 };
103
97 } // namespace webrtc 104 } // namespace webrtc
105
98 #endif // WEBRTC_MODULES_PACING_BITRATE_PROBER_H_ 106 #endif // WEBRTC_MODULES_PACING_BITRATE_PROBER_H_
OLDNEW
« no previous file with comments | « no previous file | webrtc/modules/pacing/bitrate_prober.cc » ('j') | webrtc/modules/pacing/bitrate_prober.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698