Add some sequence checkers to simulator streams. These were omitted by mistake when originally implementing the classes. Bug: b/423646186 Change-Id: I93802c3dbf2490b2a355565956c6d7ca2547e89f Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/478383 Reviewed-by: Åsa Persson <asapersson@webrtc.org> Commit-Queue: Rasmus Brandt <brandtr@webrtc.org> Cr-Commit-Position: refs/heads/main@{#47894}
diff --git a/video/timing/simulator/decodability_simulator.cc b/video/timing/simulator/decodability_simulator.cc index 856bf78..acabf2e 100644 --- a/video/timing/simulator/decodability_simulator.cc +++ b/video/timing/simulator/decodability_simulator.cc
@@ -47,7 +47,7 @@ : env_(env), ssrc_(ssrc) { RTC_DCHECK_NE(ssrc_, 0); } - ~DecodableFrameCollector() override = default; + ~DecodableFrameCollector() override { RTC_DCHECK_RUN_ON(&sequence_checker_); } DecodableFrameCollector(const DecodableFrameCollector&) = delete; DecodableFrameCollector& operator=(const DecodableFrameCollector&) = delete; @@ -139,7 +139,9 @@ RTC_DCHECK_RUN_ON(&sequence_checker_); tracker_.SetDecodedFrameIdCallback(&assembler_); } - ~DecodabilitySimulatorStream() override = default; + ~DecodabilitySimulatorStream() override { + RTC_DCHECK_RUN_ON(&sequence_checker_); + } // Implements `RtcEventLogDriver::StreamInterface`. void InsertSimulatedPacket(
diff --git a/video/timing/simulator/receiver.cc b/video/timing/simulator/receiver.cc index 138ba1c..da85562 100644 --- a/video/timing/simulator/receiver.cc +++ b/video/timing/simulator/receiver.cc
@@ -56,10 +56,13 @@ RTC_DCHECK_NE(ssrc_, rtx_ssrc_); } -Receiver::~Receiver() = default; +Receiver::~Receiver() { + RTC_DCHECK_RUN_ON(&sequence_checker_); +} void Receiver::InsertSimulatedPacket( const RtpPacketSimulator::SimulatedPacket& simulated_packet) { + RTC_DCHECK_RUN_ON(&sequence_checker_); uint32_t packet_ssrc = simulated_packet.rtp_packet.Ssrc(); bool is_video = (packet_ssrc == ssrc_); bool is_rtx = (packet_ssrc == rtx_ssrc_);
diff --git a/video/timing/simulator/rendering_simulator.cc b/video/timing/simulator/rendering_simulator.cc index ca59379..9bb5527 100644 --- a/video/timing/simulator/rendering_simulator.cc +++ b/video/timing/simulator/rendering_simulator.cc
@@ -51,7 +51,7 @@ : env_(env), ssrc_(ssrc) { RTC_DCHECK_NE(ssrc_, 0); } - ~RenderedFrameCollector() override = default; + ~RenderedFrameCollector() override { RTC_DCHECK_RUN_ON(&sequence_checker_); } RenderedFrameCollector(const RenderedFrameCollector&) = delete; RenderedFrameCollector& operator=(const RenderedFrameCollector&) = delete; @@ -196,7 +196,9 @@ RTC_DCHECK_RUN_ON(&sequence_checker_); tracker_.SetDecodedFrameIdCallback(&assembler_); } - ~RenderingSimulatorStream() override = default; + ~RenderingSimulatorStream() override { + RTC_DCHECK_RUN_ON(&sequence_checker_); + } // Implements `RtcEventLogDriver::StreamInterface`. void InsertSimulatedPacket(
diff --git a/video/timing/simulator/rtc_event_log_driver.cc b/video/timing/simulator/rtc_event_log_driver.cc index e46a6ed..7a6289b 100644 --- a/video/timing/simulator/rtc_event_log_driver.cc +++ b/video/timing/simulator/rtc_event_log_driver.cc
@@ -88,11 +88,7 @@ bool done = false; simulator_queue_->PostTask([this, &done]() { RTC_DCHECK_RUN_ON(simulator_queue_.get()); - for (auto& stream : streams_) { - stream.second->Close(); - } - receiving_streams_.clear(); - streams_.clear(); + TeardownOnQueue(); done = true; }); time_controller_.AdvanceTime(TimeDelta::Zero()); @@ -203,4 +199,13 @@ }); } +void RtcEventLogDriver::TeardownOnQueue() { + RTC_DCHECK_RUN_ON(simulator_queue_.get()); + for (auto& stream : streams_) { + stream.second->Close(); + } + receiving_streams_.clear(); + streams_.clear(); +} + } // namespace webrtc::video_timing_simulator
diff --git a/video/timing/simulator/rtc_event_log_driver.h b/video/timing/simulator/rtc_event_log_driver.h index 72e7a71..48a8eee 100644 --- a/video/timing/simulator/rtc_event_log_driver.h +++ b/video/timing/simulator/rtc_event_log_driver.h
@@ -22,6 +22,7 @@ #include "absl/functional/any_invocable.h" #include "absl/strings/string_view.h" #include "api/environment/environment.h" +#include "api/sequence_checker.h" #include "api/task_queue/task_queue_base.h" #include "api/units/time_delta.h" #include "api/units/timestamp.h" @@ -117,6 +118,9 @@ void OnLoggedVideoRecvConfig(const LoggedVideoRecvConfig& config); void OnLoggedRtpPacketIncoming(const LoggedRtpPacketIncoming& packet); + // Destroy owned objects on `simulator_queue_`. + void TeardownOnQueue() RTC_RUN_ON(simulator_queue_); + // Environment. const Config config_; SimulatedTimeTaskQueueController time_controller_;