diff --git a/webrtc/modules/congestion_controller/delay_based_bwe.cc b/webrtc/modules/congestion_controller/delay_based_bwe.cc index 147f2432b2..ad977313a8 100644 --- a/webrtc/modules/congestion_controller/delay_based_bwe.cc +++ b/webrtc/modules/congestion_controller/delay_based_bwe.cc @@ -74,7 +74,6 @@ DelayBasedBwe::DelayBasedBwe(RtcEventLog* event_log, const Clock* clock) last_logged_state_(BandwidthUsage::kBwNormal), in_sparse_update_experiment_(BweSparseUpdateExperimentIsEnabled()) { LOG(LS_INFO) << "Using Trendline filter for delay change estimation."; - network_thread_.DetachFromThread(); } DelayBasedBwe::~DelayBasedBwe() {} @@ -85,7 +84,7 @@ DelayBasedBwe::Result DelayBasedBwe::IncomingPacketFeedbackVector( RTC_DCHECK(std::is_sorted(packet_feedback_vector.begin(), packet_feedback_vector.end(), PacketFeedbackComparator())); - RTC_DCHECK(network_thread_.CalledOnValidThread()); + RTC_DCHECK_RUNS_SERIALIZED(&network_race_); // TOOD(holmer): An empty feedback vector here likely means that // all acks were too late and that the send time history had diff --git a/webrtc/modules/congestion_controller/delay_based_bwe.h b/webrtc/modules/congestion_controller/delay_based_bwe.h index c44ea12e1c..53eee84286 100644 --- a/webrtc/modules/congestion_controller/delay_based_bwe.h +++ b/webrtc/modules/congestion_controller/delay_based_bwe.h @@ -17,7 +17,7 @@ #include "webrtc/base/checks.h" #include "webrtc/base/constructormagic.h" -#include "webrtc/base/thread_checker.h" +#include "webrtc/base/race_checker.h" #include "webrtc/modules/congestion_controller/median_slope_estimator.h" #include "webrtc/modules/congestion_controller/probe_bitrate_estimator.h" #include "webrtc/modules/congestion_controller/trendline_estimator.h" @@ -70,7 +70,7 @@ class DelayBasedBwe { bool overusing, uint32_t* target_bitrate_bps); - rtc::ThreadChecker network_thread_; + rtc::RaceChecker network_race_; RtcEventLog* const event_log_; const Clock* const clock_; std::unique_ptr inter_arrival_; diff --git a/webrtc/modules/congestion_controller/include/send_side_congestion_controller.h b/webrtc/modules/congestion_controller/include/send_side_congestion_controller.h index 4533d46e8e..660750b4e3 100644 --- a/webrtc/modules/congestion_controller/include/send_side_congestion_controller.h +++ b/webrtc/modules/congestion_controller/include/send_side_congestion_controller.h @@ -17,7 +17,7 @@ #include "webrtc/base/constructormagic.h" #include "webrtc/base/criticalsection.h" #include "webrtc/base/networkroute.h" -#include "webrtc/base/thread_checker.h" +#include "webrtc/base/race_checker.h" #include "webrtc/common_types.h" #include "webrtc/modules/congestion_controller/delay_based_bwe.h" #include "webrtc/modules/congestion_controller/transport_feedback_adapter.h" @@ -155,7 +155,7 @@ class SendSideCongestionController : public CallStatsObserver, int min_bitrate_bps_ GUARDED_BY(bwe_lock_); std::unique_ptr delay_based_bwe_ GUARDED_BY(bwe_lock_); - rtc::ThreadChecker worker_thread_checker_; + rtc::RaceChecker worker_race_; RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(SendSideCongestionController); }; diff --git a/webrtc/modules/congestion_controller/send_side_congestion_controller.cc b/webrtc/modules/congestion_controller/send_side_congestion_controller.cc index 57e7685f88..d5f966aeaa 100644 --- a/webrtc/modules/congestion_controller/send_side_congestion_controller.cc +++ b/webrtc/modules/congestion_controller/send_side_congestion_controller.cc @@ -101,7 +101,6 @@ SendSideCongestionController::SendSideCongestionController( min_bitrate_bps_(congestion_controller::GetMinBitrateBps()), delay_based_bwe_(new DelayBasedBwe(event_log_, clock_)) { delay_based_bwe_->SetMinBitrate(min_bitrate_bps_); - worker_thread_checker_.DetachFromThread(); } SendSideCongestionController::~SendSideCongestionController() {} @@ -273,7 +272,7 @@ void SendSideCongestionController::AddPacket( void SendSideCongestionController::OnTransportFeedback( const rtcp::TransportFeedback& feedback) { - RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); + RTC_DCHECK_RUNS_SERIALIZED(&worker_race_); transport_feedback_adapter_.OnTransportFeedback(feedback); std::vector feedback_vector = ReceivedPacketFeedbackVector( transport_feedback_adapter_.GetTransportFeedbackVector()); @@ -292,7 +291,7 @@ void SendSideCongestionController::OnTransportFeedback( std::vector SendSideCongestionController::GetTransportFeedbackVector() const { - RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); + RTC_DCHECK_RUNS_SERIALIZED(&worker_race_); return transport_feedback_adapter_.GetTransportFeedbackVector(); } diff --git a/webrtc/modules/pacing/packet_router.cc b/webrtc/modules/pacing/packet_router.cc index 871ba0fcec..d5fd8b98d2 100644 --- a/webrtc/modules/pacing/packet_router.cc +++ b/webrtc/modules/pacing/packet_router.cc @@ -22,9 +22,7 @@ namespace webrtc { PacketRouter::PacketRouter() : last_remb_time_ms_(rtc::TimeMillis()), last_send_bitrate_bps_(0), - transport_seq_(0) { - pacer_thread_checker_.DetachFromThread(); -} + transport_seq_(0) {} PacketRouter::~PacketRouter() { RTC_DCHECK(rtp_send_modules_.empty()); @@ -98,7 +96,7 @@ bool PacketRouter::TimeToSendPacket(uint32_t ssrc, int64_t capture_timestamp, bool retransmission, const PacedPacketInfo& pacing_info) { - RTC_DCHECK(pacer_thread_checker_.CalledOnValidThread()); + RTC_DCHECK_RUNS_SERIALIZED(&pacer_race_); rtc::CritScope cs(&modules_crit_); for (auto* rtp_module : rtp_send_modules_) { if (!rtp_module->SendingMedia()) @@ -114,7 +112,7 @@ bool PacketRouter::TimeToSendPacket(uint32_t ssrc, size_t PacketRouter::TimeToSendPadding(size_t bytes_to_send, const PacedPacketInfo& pacing_info) { - RTC_DCHECK(pacer_thread_checker_.CalledOnValidThread()); + RTC_DCHECK_RUNS_SERIALIZED(&pacer_race_); size_t total_bytes_sent = 0; rtc::CritScope cs(&modules_crit_); // Rtp modules are ordered by which stream can most benefit from padding. @@ -208,7 +206,7 @@ bool PacketRouter::SendRemb(uint32_t bitrate_bps, } bool PacketRouter::SendTransportFeedback(rtcp::TransportFeedback* packet) { - RTC_DCHECK(pacer_thread_checker_.CalledOnValidThread()); + RTC_DCHECK_RUNS_SERIALIZED(&pacer_race_); rtc::CritScope cs(&modules_crit_); // Prefer send modules. for (auto* rtp_module : rtp_send_modules_) { diff --git a/webrtc/modules/pacing/packet_router.h b/webrtc/modules/pacing/packet_router.h index 346f68f22e..5c90577f2b 100644 --- a/webrtc/modules/pacing/packet_router.h +++ b/webrtc/modules/pacing/packet_router.h @@ -17,7 +17,7 @@ #include "webrtc/base/constructormagic.h" #include "webrtc/base/criticalsection.h" #include "webrtc/base/thread_annotations.h" -#include "webrtc/base/thread_checker.h" +#include "webrtc/base/race_checker.h" #include "webrtc/common_types.h" #include "webrtc/modules/pacing/paced_sender.h" #include "webrtc/modules/remote_bitrate_estimator/include/remote_bitrate_estimator.h" @@ -84,7 +84,7 @@ class PacketRouter : public PacedSender::PacketSender, virtual bool SendTransportFeedback(rtcp::TransportFeedback* packet); private: - rtc::ThreadChecker pacer_thread_checker_; + rtc::RaceChecker pacer_race_; rtc::CriticalSection modules_crit_; std::list rtp_send_modules_ GUARDED_BY(modules_crit_); std::vector rtp_receive_modules_ GUARDED_BY(modules_crit_);