Potential race-condition resolution in CongestionController::min_bitrate_bps_
BUG=None Review-Url: https://codereview.webrtc.org/2752353003 Cr-Commit-Position: refs/heads/master@{#17294}
This commit is contained in:
parent
40ba3addc7
commit
17ca2883e3
@ -171,12 +171,11 @@ CongestionController::CongestionController(
|
|||||||
remote_bitrate_estimator_(remote_bitrate_observer, clock_),
|
remote_bitrate_estimator_(remote_bitrate_observer, clock_),
|
||||||
remote_estimator_proxy_(clock_, packet_router_),
|
remote_estimator_proxy_(clock_, packet_router_),
|
||||||
transport_feedback_adapter_(clock_),
|
transport_feedback_adapter_(clock_),
|
||||||
min_bitrate_bps_(congestion_controller::GetMinBitrateBps()),
|
|
||||||
max_bitrate_bps_(0),
|
|
||||||
last_reported_bitrate_bps_(0),
|
last_reported_bitrate_bps_(0),
|
||||||
last_reported_fraction_loss_(0),
|
last_reported_fraction_loss_(0),
|
||||||
last_reported_rtt_(0),
|
last_reported_rtt_(0),
|
||||||
network_state_(kNetworkUp),
|
network_state_(kNetworkUp),
|
||||||
|
min_bitrate_bps_(congestion_controller::GetMinBitrateBps()),
|
||||||
delay_based_bwe_(new DelayBasedBwe(event_log_, clock_)) {
|
delay_based_bwe_(new DelayBasedBwe(event_log_, clock_)) {
|
||||||
delay_based_bwe_->SetMinBitrate(min_bitrate_bps_);
|
delay_based_bwe_->SetMinBitrate(min_bitrate_bps_);
|
||||||
worker_thread_checker_.DetachFromThread();
|
worker_thread_checker_.DetachFromThread();
|
||||||
@ -208,14 +207,13 @@ void CongestionController::SetBweBitrates(int min_bitrate_bps,
|
|||||||
|
|
||||||
probe_controller_->SetBitrates(min_bitrate_bps, start_bitrate_bps,
|
probe_controller_->SetBitrates(min_bitrate_bps, start_bitrate_bps,
|
||||||
max_bitrate_bps);
|
max_bitrate_bps);
|
||||||
max_bitrate_bps_ = max_bitrate_bps;
|
|
||||||
|
|
||||||
remote_bitrate_estimator_.SetMinBitrate(min_bitrate_bps);
|
remote_bitrate_estimator_.SetMinBitrate(min_bitrate_bps);
|
||||||
min_bitrate_bps_ = min_bitrate_bps;
|
|
||||||
{
|
{
|
||||||
rtc::CritScope cs(&bwe_lock_);
|
rtc::CritScope cs(&bwe_lock_);
|
||||||
if (start_bitrate_bps > 0)
|
if (start_bitrate_bps > 0)
|
||||||
delay_based_bwe_->SetStartBitrate(start_bitrate_bps);
|
delay_based_bwe_->SetStartBitrate(start_bitrate_bps);
|
||||||
|
min_bitrate_bps_ = min_bitrate_bps;
|
||||||
delay_based_bwe_->SetMinBitrate(min_bitrate_bps_);
|
delay_based_bwe_->SetMinBitrate(min_bitrate_bps_);
|
||||||
}
|
}
|
||||||
MaybeTriggerOnNetworkChanged();
|
MaybeTriggerOnNetworkChanged();
|
||||||
@ -233,8 +231,6 @@ void CongestionController::OnNetworkRouteChanged(
|
|||||||
// no longer exposed outside CongestionController.
|
// no longer exposed outside CongestionController.
|
||||||
bitrate_controller_->ResetBitrates(bitrate_bps, min_bitrate_bps,
|
bitrate_controller_->ResetBitrates(bitrate_bps, min_bitrate_bps,
|
||||||
max_bitrate_bps);
|
max_bitrate_bps);
|
||||||
min_bitrate_bps_ = min_bitrate_bps;
|
|
||||||
max_bitrate_bps_ = max_bitrate_bps;
|
|
||||||
// TODO(honghaiz): Recreate this object once the remote bitrate estimator is
|
// TODO(honghaiz): Recreate this object once the remote bitrate estimator is
|
||||||
// no longer exposed outside CongestionController.
|
// no longer exposed outside CongestionController.
|
||||||
remote_bitrate_estimator_.SetMinBitrate(min_bitrate_bps);
|
remote_bitrate_estimator_.SetMinBitrate(min_bitrate_bps);
|
||||||
@ -243,9 +239,10 @@ void CongestionController::OnNetworkRouteChanged(
|
|||||||
network_route.remote_network_id);
|
network_route.remote_network_id);
|
||||||
{
|
{
|
||||||
rtc::CritScope cs(&bwe_lock_);
|
rtc::CritScope cs(&bwe_lock_);
|
||||||
|
min_bitrate_bps_ = min_bitrate_bps;
|
||||||
delay_based_bwe_.reset(new DelayBasedBwe(event_log_, clock_));
|
delay_based_bwe_.reset(new DelayBasedBwe(event_log_, clock_));
|
||||||
delay_based_bwe_->SetStartBitrate(bitrate_bps);
|
delay_based_bwe_->SetStartBitrate(bitrate_bps);
|
||||||
delay_based_bwe_->SetMinBitrate(min_bitrate_bps);
|
delay_based_bwe_->SetMinBitrate(min_bitrate_bps_);
|
||||||
}
|
}
|
||||||
|
|
||||||
probe_controller_->Reset();
|
probe_controller_->Reset();
|
||||||
|
|||||||
@ -189,14 +189,13 @@ class CongestionController : public CallStatsObserver,
|
|||||||
WrappingBitrateEstimator remote_bitrate_estimator_;
|
WrappingBitrateEstimator remote_bitrate_estimator_;
|
||||||
RemoteEstimatorProxy remote_estimator_proxy_;
|
RemoteEstimatorProxy remote_estimator_proxy_;
|
||||||
TransportFeedbackAdapter transport_feedback_adapter_;
|
TransportFeedbackAdapter transport_feedback_adapter_;
|
||||||
int min_bitrate_bps_;
|
|
||||||
int max_bitrate_bps_;
|
|
||||||
rtc::CriticalSection network_state_lock_;
|
rtc::CriticalSection network_state_lock_;
|
||||||
uint32_t last_reported_bitrate_bps_ GUARDED_BY(network_state_lock_);
|
uint32_t last_reported_bitrate_bps_ GUARDED_BY(network_state_lock_);
|
||||||
uint8_t last_reported_fraction_loss_ GUARDED_BY(network_state_lock_);
|
uint8_t last_reported_fraction_loss_ GUARDED_BY(network_state_lock_);
|
||||||
int64_t last_reported_rtt_ GUARDED_BY(network_state_lock_);
|
int64_t last_reported_rtt_ GUARDED_BY(network_state_lock_);
|
||||||
NetworkState network_state_ GUARDED_BY(network_state_lock_);
|
NetworkState network_state_ GUARDED_BY(network_state_lock_);
|
||||||
rtc::CriticalSection bwe_lock_;
|
rtc::CriticalSection bwe_lock_;
|
||||||
|
int min_bitrate_bps_ GUARDED_BY(bwe_lock_);
|
||||||
std::unique_ptr<DelayBasedBwe> delay_based_bwe_ GUARDED_BY(bwe_lock_);
|
std::unique_ptr<DelayBasedBwe> delay_based_bwe_ GUARDED_BY(bwe_lock_);
|
||||||
|
|
||||||
rtc::ThreadChecker worker_thread_checker_;
|
rtc::ThreadChecker worker_thread_checker_;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user