Add field trial to reset BWE if Network adapter changes instead of if IP address changes
Bug: webrtc:14928, webrtc:42225231 Change-Id: I7c3d8d87cb2d0fe8dad5794c6247876c17c73f74 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/350561 Reviewed-by: Jonas Oreland <jonaso@webrtc.org> Commit-Queue: Per Kjellander <perkj@webrtc.org> Cr-Commit-Position: refs/heads/main@{#42324}
This commit is contained in:
parent
b25c747d5d
commit
d1a8ce588f
@ -95,6 +95,8 @@ RtpTransportControllerSend::RtpTransportControllerSend(
|
|||||||
!env_.field_trials().IsEnabled("WebRTC-Bwe-NoFeedbackReset")),
|
!env_.field_trials().IsEnabled("WebRTC-Bwe-NoFeedbackReset")),
|
||||||
add_pacing_to_cwin_(env_.field_trials().IsEnabled(
|
add_pacing_to_cwin_(env_.field_trials().IsEnabled(
|
||||||
"WebRTC-AddPacingToCongestionWindowPushback")),
|
"WebRTC-AddPacingToCongestionWindowPushback")),
|
||||||
|
reset_bwe_on_adapter_id_change_(
|
||||||
|
env_.field_trials().IsEnabled("WebRTC-Bwe-ResetOnAdapterIdChange")),
|
||||||
relay_bandwidth_cap_("relay_cap", DataRate::PlusInfinity()),
|
relay_bandwidth_cap_("relay_cap", DataRate::PlusInfinity()),
|
||||||
transport_overhead_bytes_per_packet_(0),
|
transport_overhead_bytes_per_packet_(0),
|
||||||
network_available_(false),
|
network_available_(false),
|
||||||
@ -295,18 +297,23 @@ void RtpTransportControllerSend::RegisterTargetTransferRateObserver(
|
|||||||
bool RtpTransportControllerSend::IsRelevantRouteChange(
|
bool RtpTransportControllerSend::IsRelevantRouteChange(
|
||||||
const rtc::NetworkRoute& old_route,
|
const rtc::NetworkRoute& old_route,
|
||||||
const rtc::NetworkRoute& new_route) const {
|
const rtc::NetworkRoute& new_route) const {
|
||||||
// TODO(bugs.webrtc.org/11438): Experiment with using more information/
|
|
||||||
// other conditions.
|
|
||||||
bool connected_changed = old_route.connected != new_route.connected;
|
bool connected_changed = old_route.connected != new_route.connected;
|
||||||
bool route_ids_changed =
|
bool route_ids_changed = false;
|
||||||
old_route.local.network_id() != new_route.local.network_id() ||
|
bool relaying_changed = false;
|
||||||
old_route.remote.network_id() != new_route.remote.network_id();
|
|
||||||
if (relay_bandwidth_cap_->IsFinite()) {
|
if (reset_bwe_on_adapter_id_change_) {
|
||||||
bool relaying_changed = IsRelayed(old_route) != IsRelayed(new_route);
|
route_ids_changed =
|
||||||
return connected_changed || route_ids_changed || relaying_changed;
|
old_route.local.adapter_id() != new_route.local.adapter_id() ||
|
||||||
|
old_route.remote.adapter_id() != new_route.remote.adapter_id();
|
||||||
} else {
|
} else {
|
||||||
return connected_changed || route_ids_changed;
|
route_ids_changed =
|
||||||
|
old_route.local.network_id() != new_route.local.network_id() ||
|
||||||
|
old_route.remote.network_id() != new_route.remote.network_id();
|
||||||
}
|
}
|
||||||
|
if (relay_bandwidth_cap_->IsFinite()) {
|
||||||
|
relaying_changed = IsRelayed(old_route) != IsRelayed(new_route);
|
||||||
|
}
|
||||||
|
return connected_changed || route_ids_changed || relaying_changed;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RtpTransportControllerSend::OnNetworkRouteChanged(
|
void RtpTransportControllerSend::OnNetworkRouteChanged(
|
||||||
|
|||||||
@ -152,6 +152,7 @@ class RtpTransportControllerSend final
|
|||||||
SequenceChecker sequence_checker_;
|
SequenceChecker sequence_checker_;
|
||||||
TaskQueueBase* task_queue_;
|
TaskQueueBase* task_queue_;
|
||||||
PacketRouter packet_router_;
|
PacketRouter packet_router_;
|
||||||
|
|
||||||
std::vector<std::unique_ptr<RtpVideoSenderInterface>> video_rtp_senders_
|
std::vector<std::unique_ptr<RtpVideoSenderInterface>> video_rtp_senders_
|
||||||
RTC_GUARDED_BY(&sequence_checker_);
|
RTC_GUARDED_BY(&sequence_checker_);
|
||||||
RtpBitrateConfigurator bitrate_configurator_;
|
RtpBitrateConfigurator bitrate_configurator_;
|
||||||
@ -193,6 +194,8 @@ class RtpTransportControllerSend final
|
|||||||
|
|
||||||
const bool reset_feedback_on_route_change_;
|
const bool reset_feedback_on_route_change_;
|
||||||
const bool add_pacing_to_cwin_;
|
const bool add_pacing_to_cwin_;
|
||||||
|
const bool reset_bwe_on_adapter_id_change_;
|
||||||
|
|
||||||
FieldTrialParameter<DataRate> relay_bandwidth_cap_;
|
FieldTrialParameter<DataRate> relay_bandwidth_cap_;
|
||||||
|
|
||||||
size_t transport_overhead_bytes_per_packet_ RTC_GUARDED_BY(sequence_checker_);
|
size_t transport_overhead_bytes_per_packet_ RTC_GUARDED_BY(sequence_checker_);
|
||||||
|
|||||||
@ -62,6 +62,9 @@ ACTIVE_FIELD_TRIALS: FrozenSet[FieldTrial] = frozenset([
|
|||||||
FieldTrial('WebRTC-Bwe-LimitPacingFactorByUpperLinkCapacityEstimate',
|
FieldTrial('WebRTC-Bwe-LimitPacingFactorByUpperLinkCapacityEstimate',
|
||||||
42220543,
|
42220543,
|
||||||
date(2025, 1, 1)),
|
date(2025, 1, 1)),
|
||||||
|
FieldTrial('WebRTC-Bwe-ResetOnAdapterIdChange',
|
||||||
|
42225231,
|
||||||
|
date(2025, 5, 30)),
|
||||||
FieldTrial('WebRTC-DataChannelMessageInterleaving',
|
FieldTrial('WebRTC-DataChannelMessageInterleaving',
|
||||||
41481008,
|
41481008,
|
||||||
date(2024, 10, 1)),
|
date(2024, 10, 1)),
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user