diff --git a/webrtc/modules/rtp_rtcp/include/flexfec_sender.h b/webrtc/modules/rtp_rtcp/include/flexfec_sender.h index 48d3da02ac..fa4bd6e7ec 100644 --- a/webrtc/modules/rtp_rtcp/include/flexfec_sender.h +++ b/webrtc/modules/rtp_rtcp/include/flexfec_sender.h @@ -29,6 +29,9 @@ namespace webrtc { class RtpPacketToSend; +// Note that this class is not thread safe, and thus requires external +// synchronization. + class FlexfecSender { public: FlexfecSender(int payload_type, @@ -62,9 +65,8 @@ class FlexfecSender { private: // Utility. Clock* const clock_; - Random random_ GUARDED_BY(sequence_checker_); - int64_t last_generated_packet_ms_ GUARDED_BY(sequence_checker_); - rtc::SequencedTaskChecker sequence_checker_; + Random random_; + int64_t last_generated_packet_ms_; // Config. const int payload_type_; @@ -72,10 +74,10 @@ class FlexfecSender { const uint32_t ssrc_; const uint32_t protected_media_ssrc_; // Sequence number of next packet to generate. - uint16_t seq_num_ GUARDED_BY(sequence_checker_); + uint16_t seq_num_; // Implementation. - UlpfecGenerator ulpfec_generator_ GUARDED_BY(sequence_checker_); + UlpfecGenerator ulpfec_generator_; const RtpHeaderExtensionMap rtp_header_extension_map_; }; diff --git a/webrtc/modules/rtp_rtcp/source/flexfec_sender.cc b/webrtc/modules/rtp_rtcp/source/flexfec_sender.cc index ec8bbdcbe9..5019456841 100644 --- a/webrtc/modules/rtp_rtcp/source/flexfec_sender.cc +++ b/webrtc/modules/rtp_rtcp/source/flexfec_sender.cc @@ -80,10 +80,6 @@ FlexfecSender::FlexfecSender( // This object should not have been instantiated if FlexFEC is disabled. RTC_DCHECK_GE(payload_type, 0); RTC_DCHECK_LE(payload_type, 127); - - // It's OK to create this object on a different thread/task queue than - // the one used during main operation. - sequence_checker_.Detach(); } FlexfecSender::~FlexfecSender() = default; @@ -91,13 +87,10 @@ FlexfecSender::~FlexfecSender() = default; // We are reusing the implementation from UlpfecGenerator for SetFecParameters, // AddRtpPacketAndGenerateFec, and FecAvailable. void FlexfecSender::SetFecParameters(const FecProtectionParams& params) { - RTC_DCHECK_CALLED_SEQUENTIALLY(&sequence_checker_); ulpfec_generator_.SetFecParameters(params); } -bool FlexfecSender::AddRtpPacketAndGenerateFec( - const RtpPacketToSend& packet) { - RTC_DCHECK_CALLED_SEQUENTIALLY(&sequence_checker_); +bool FlexfecSender::AddRtpPacketAndGenerateFec(const RtpPacketToSend& packet) { // TODO(brandtr): Generalize this SSRC check when we support multistream // protection. RTC_DCHECK_EQ(packet.Ssrc(), protected_media_ssrc_); @@ -106,14 +99,10 @@ bool FlexfecSender::AddRtpPacketAndGenerateFec( } bool FlexfecSender::FecAvailable() const { - RTC_DCHECK_CALLED_SEQUENTIALLY(&sequence_checker_); return ulpfec_generator_.FecAvailable(); } -std::vector> -FlexfecSender::GetFecPackets() { - RTC_DCHECK_CALLED_SEQUENTIALLY(&sequence_checker_); - +std::vector> FlexfecSender::GetFecPackets() { std::vector> fec_packets_to_send; fec_packets_to_send.reserve(ulpfec_generator_.generated_fec_packets_.size()); for (const auto& fec_packet : ulpfec_generator_.generated_fec_packets_) {