Index: webrtc/modules/pacing/bitrate_prober.cc |
diff --git a/webrtc/modules/pacing/bitrate_prober.cc b/webrtc/modules/pacing/bitrate_prober.cc |
index bdf48fda1de5a793fb68f3545a16ba842f184c60..37bdecf3b4b30d86075bb0df84ec011168d4f669 100644 |
--- a/webrtc/modules/pacing/bitrate_prober.cc |
+++ b/webrtc/modules/pacing/bitrate_prober.cc |
@@ -36,6 +36,11 @@ constexpr int kMaxProbeDelayMs = 3; |
// Number of times probing is retried before the cluster is dropped. |
constexpr int kMaxRetryAttempts = 3; |
+// The min probe packet size is scaled with the bitrate we're probing at. |
+// This defines the max min probe packet size, meaning that on high bitrates |
+// we have a min probe packet size of 200 bytes. |
+constexpr size_t kMinProbePacketSize = 200; |
+ |
} // namespace |
BitrateProber::BitrateProber() |
@@ -64,9 +69,9 @@ bool BitrateProber::IsProbing() const { |
void BitrateProber::OnIncomingPacket(size_t packet_size) { |
// Don't initialize probing unless we have something large enough to start |
// probing. |
- if (probing_state_ == ProbingState::kInactive && |
- !clusters_.empty() && |
- packet_size >= PacedSender::kMinProbePacketSize) { |
+ if (probing_state_ == ProbingState::kInactive && !clusters_.empty() && |
+ packet_size >= |
+ std::min<size_t>(RecommendedMinProbeSize(), kMinProbePacketSize)) { |
// Send next probe right away. |
next_probe_time_ms_ = -1; |
probing_state_ = ProbingState::kActive; |
@@ -136,7 +141,7 @@ int BitrateProber::CurrentClusterId() const { |
// feasible. |
size_t BitrateProber::RecommendedMinProbeSize() const { |
RTC_DCHECK(!clusters_.empty()); |
- return clusters_.front().bitrate_bps * 2 * kMinProbeDeltaMs / (8 * 1000); |
+ return clusters_.front().bitrate_bps * 3 * kMinProbeDeltaMs / (8 * 1000); |
} |
void BitrateProber::ProbeSent(int64_t now_ms, size_t bytes) { |