Don't reset RTT Backoff timeout on route change.

Bug: webrtc:9718
Change-Id: I536733b33c40838cdfc473988581147bec6a358a
Reviewed-on: https://webrtc-review.googlesource.com/c/109927
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Reviewed-by: Christoffer Rodbro <crodbro@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25638}
This commit is contained in:
Sebastian Jansson
2018-11-14 14:19:45 +01:00
committed by Commit Bot
parent fdc635d2a8
commit 24643488d4
3 changed files with 87 additions and 37 deletions

View File

@ -29,14 +29,22 @@ namespace webrtc {
class RtcEventLog;
struct RttBasedBackoffConfig {
RttBasedBackoffConfig();
RttBasedBackoffConfig(const RttBasedBackoffConfig&);
RttBasedBackoffConfig& operator=(const RttBasedBackoffConfig&) = default;
~RttBasedBackoffConfig();
FieldTrialParameter<TimeDelta> rtt_limit;
FieldTrialParameter<double> drop_fraction;
FieldTrialParameter<TimeDelta> drop_interval;
class RttBasedBackoff {
public:
RttBasedBackoff();
~RttBasedBackoff();
void OnRouteChange();
void UpdatePropagationRtt(Timestamp at_time, TimeDelta propagation_rtt);
TimeDelta RttLowerBound(Timestamp at_time) const;
FieldTrialParameter<TimeDelta> rtt_limit_;
FieldTrialParameter<double> drop_fraction_;
FieldTrialParameter<TimeDelta> drop_interval_;
FieldTrialFlag persist_on_route_change_;
public:
Timestamp last_propagation_rtt_update_;
TimeDelta last_propagation_rtt_;
};
class SendSideBandwidthEstimation {
@ -45,12 +53,13 @@ class SendSideBandwidthEstimation {
explicit SendSideBandwidthEstimation(RtcEventLog* event_log);
~SendSideBandwidthEstimation();
void OnRouteChange();
void CurrentEstimate(int* bitrate, uint8_t* loss, int64_t* rtt) const;
// Call periodically to update estimate.
void UpdateEstimate(Timestamp at_time);
void OnSentPacket(SentPacket sent_packet);
void UpdatePropagationRtt(Timestamp at_time, TimeDelta feedback_rtt);
void UpdatePropagationRtt(Timestamp at_time, TimeDelta propagation_rtt);
// Call when we receive a RTCP message with TMMBR or REMB.
void UpdateReceiverEstimate(Timestamp at_time, DataRate bandwidth);
@ -96,7 +105,7 @@ class SendSideBandwidthEstimation {
// set |current_bitrate_| to the capped value and updates the event log.
void CapBitrateToThresholds(Timestamp at_time, DataRate bitrate);
RttBasedBackoffConfig rtt_backoff_config_;
RttBasedBackoff rtt_backoff_;
std::deque<std::pair<Timestamp, DataRate> > min_bitrate_history_;
@ -117,9 +126,6 @@ class SendSideBandwidthEstimation {
uint8_t last_logged_fraction_loss_;
TimeDelta last_round_trip_time_;
Timestamp last_propagation_rtt_update_;
TimeDelta last_propagation_rtt_;
DataRate bwe_incoming_;
DataRate delay_based_bitrate_;
Timestamp time_last_decrease_;