Allow configuring pacer burst through RtcConfiguration
This allow exernal applications to control how many packets can be sent relative current BWE.
This is a partial revert of https://webrtc-review.googlesource.com/c/src/+/311102
Bug: chromium:1354491
Change-Id: Ia236aaacc468ddac12341efa555041bb2dfdde62
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/330580
Commit-Queue: Per Kjellander <perkj@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#41343}
diff --git a/api/peer_connection_interface.h b/api/peer_connection_interface.h
index e8dc3dd..c44e741 100644
--- a/api/peer_connection_interface.h
+++ b/api/peer_connection_interface.h
@@ -686,7 +686,6 @@
PortAllocatorConfig port_allocator_config;
// The burst interval of the pacer, see TaskQueuePacedSender constructor.
- // TODO(hbos): Deprecated, Remove once Chromium is not setting it.
absl::optional<TimeDelta> pacer_burst_interval;
//
diff --git a/call/call_config.cc b/call/call_config.cc
index 5f77714..ae4ff86 100644
--- a/call/call_config.cc
+++ b/call/call_config.cc
@@ -31,6 +31,7 @@
network_state_predictor_factory;
transportConfig.task_queue_factory = &env.task_queue_factory();
transportConfig.trials = &env.field_trials();
+ transportConfig.pacer_burst_interval = pacer_burst_interval;
return transportConfig;
}
diff --git a/call/call_config.h b/call/call_config.h
index 0642cc2..b99c644 100644
--- a/call/call_config.h
+++ b/call/call_config.h
@@ -70,6 +70,9 @@
Metronome* decode_metronome = nullptr;
+ // The burst interval of the pacer, see TaskQueuePacedSender constructor.
+ absl::optional<TimeDelta> pacer_burst_interval;
+
// Enables send packet batching from the egress RTP sender.
bool enable_send_packet_batching = false;
};
diff --git a/call/rtp_transport_config.h b/call/rtp_transport_config.h
index f2030b3..6c94f7d 100644
--- a/call/rtp_transport_config.h
+++ b/call/rtp_transport_config.h
@@ -44,6 +44,9 @@
// Key-value mapping of internal configurations to apply,
// e.g. field trials.
const FieldTrialsView* trials = nullptr;
+
+ // The burst interval of the pacer, see TaskQueuePacedSender constructor.
+ absl::optional<TimeDelta> pacer_burst_interval;
};
} // namespace webrtc
diff --git a/call/rtp_transport_controller_send.cc b/call/rtp_transport_controller_send.cc
index 8d24f75..afe6cb0 100644
--- a/call/rtp_transport_controller_send.cc
+++ b/call/rtp_transport_controller_send.cc
@@ -111,6 +111,10 @@
pacer_.SetPacingRates(
DataRate::BitsPerSec(config.bitrate_config.start_bitrate_bps),
DataRate::Zero());
+ if (config.pacer_burst_interval) {
+ // Default burst interval overriden by config.
+ pacer_.SetSendBurstInterval(*config.pacer_burst_interval);
+ }
}
RtpTransportControllerSend::~RtpTransportControllerSend() {
diff --git a/pc/peer_connection_factory.cc b/pc/peer_connection_factory.cc
index 951da5f..06ca790 100644
--- a/pc/peer_connection_factory.cc
+++ b/pc/peer_connection_factory.cc
@@ -344,6 +344,7 @@
call_config.rtp_transport_controller_send_factory =
transport_controller_send_factory_.get();
call_config.decode_metronome = decode_metronome_.get();
+ call_config.pacer_burst_interval = configuration.pacer_burst_interval;
return context_->call_factory()->CreateCall(call_config);
}