Index: webrtc/modules/congestion_controller/probe_bitrate_estimator.cc |
diff --git a/webrtc/modules/congestion_controller/probe_bitrate_estimator.cc b/webrtc/modules/congestion_controller/probe_bitrate_estimator.cc |
index 2d66198ef833744eadf6c4184c00bdbc00b76ef4..d7460c2349785fe0c91b135d090183d512cd530d 100644 |
--- a/webrtc/modules/congestion_controller/probe_bitrate_estimator.cc |
+++ b/webrtc/modules/congestion_controller/probe_bitrate_estimator.cc |
@@ -15,6 +15,7 @@ |
#include "webrtc/base/checks.h" |
#include "webrtc/base/logging.h" |
#include "webrtc/logging/rtc_event_log/rtc_event_log.h" |
+#include "webrtc/system_wrappers/include/field_trial.h" |
namespace { |
// The minumum number of probes we need to receive feedback about in percent |
@@ -41,7 +42,9 @@ constexpr int kMaxProbeIntervalMs = 1000; |
namespace webrtc { |
ProbeBitrateEstimator::ProbeBitrateEstimator(RtcEventLog* event_log) |
- : event_log_(event_log) {} |
+ : event_log_(event_log), |
+ send_side_bwe_with_overhead_( |
+ webrtc::field_trial::IsEnabled("WebRTC-SendSideBwe-WithOverhead")) {} |
int ProbeBitrateEstimator::HandleProbeAndEstimateBitrate( |
const PacketFeedback& packet_feedback) { |
@@ -50,7 +53,13 @@ int ProbeBitrateEstimator::HandleProbeAndEstimateBitrate( |
EraseOldClusters(packet_feedback.arrival_time_ms - kMaxClusterHistoryMs); |
- int payload_size_bits = packet_feedback.payload_size * 8; |
+ const size_t packet_size = send_side_bwe_with_overhead_ |
+ ? packet_feedback.payload_size + |
+ packet_feedback.rtp_headers_size + |
+ packet_feedback.transport_headers_size |
+ : packet_feedback.payload_size; |
+ int packet_size_bits = packet_size * 8; |
+ |
AggregatedCluster* cluster = &clusters_[cluster_id]; |
if (packet_feedback.send_time_ms < cluster->first_send_ms) { |
@@ -58,16 +67,16 @@ int ProbeBitrateEstimator::HandleProbeAndEstimateBitrate( |
} |
if (packet_feedback.send_time_ms > cluster->last_send_ms) { |
cluster->last_send_ms = packet_feedback.send_time_ms; |
- cluster->size_last_send = payload_size_bits; |
+ cluster->size_last_send = packet_size_bits; |
} |
if (packet_feedback.arrival_time_ms < cluster->first_receive_ms) { |
cluster->first_receive_ms = packet_feedback.arrival_time_ms; |
- cluster->size_first_receive = payload_size_bits; |
+ cluster->size_first_receive = packet_size_bits; |
} |
if (packet_feedback.arrival_time_ms > cluster->last_receive_ms) { |
cluster->last_receive_ms = packet_feedback.arrival_time_ms; |
} |
- cluster->size_total += payload_size_bits; |
+ cluster->size_total += packet_size_bits; |
cluster->num_probes += 1; |
RTC_DCHECK_GT(packet_feedback.pacing_info.probe_cluster_min_probes, 0); |