diff --git a/modules/rtp_rtcp/include/flexfec_receiver.h b/modules/rtp_rtcp/include/flexfec_receiver.h index 3cf4c3845e..a869c8ad41 100644 --- a/modules/rtp_rtcp/include/flexfec_receiver.h +++ b/modules/rtp_rtcp/include/flexfec_receiver.h @@ -16,6 +16,7 @@ #include #include "api/sequence_checker.h" +#include "api/units/timestamp.h" #include "modules/rtp_rtcp/include/recovered_packet_receiver.h" #include "modules/rtp_rtcp/source/forward_error_correction.h" #include "modules/rtp_rtcp/source/rtp_packet_received.h" @@ -67,7 +68,8 @@ class FlexfecReceiver { // Logging and stats. Clock* const clock_; - int64_t last_recovered_packet_ms_ RTC_GUARDED_BY(sequence_checker_); + Timestamp last_recovered_packet_ RTC_GUARDED_BY(sequence_checker_) = + Timestamp::MinusInfinity(); FecPacketCounter packet_counter_ RTC_GUARDED_BY(sequence_checker_); RTC_NO_UNIQUE_ADDRESS SequenceChecker sequence_checker_; diff --git a/modules/rtp_rtcp/include/flexfec_sender.h b/modules/rtp_rtcp/include/flexfec_sender.h index f0acfe6c3d..b61781a480 100644 --- a/modules/rtp_rtcp/include/flexfec_sender.h +++ b/modules/rtp_rtcp/include/flexfec_sender.h @@ -18,6 +18,7 @@ #include "absl/strings/string_view.h" #include "api/array_view.h" #include "api/rtp_parameters.h" +#include "api/units/timestamp.h" #include "modules/rtp_rtcp/include/rtp_header_extension_map.h" #include "modules/rtp_rtcp/include/rtp_rtcp_defines.h" #include "modules/rtp_rtcp/source/rtp_header_extension_size.h" @@ -77,7 +78,7 @@ class FlexfecSender : public VideoFecGenerator { // Utility. Clock* const clock_; Random random_; - int64_t last_generated_packet_ms_; + Timestamp last_generated_packet_ = Timestamp::MinusInfinity(); // Config. const int payload_type_; diff --git a/modules/rtp_rtcp/source/flexfec_receiver.cc b/modules/rtp_rtcp/source/flexfec_receiver.cc index 3f345cd6d2..132ed164f9 100644 --- a/modules/rtp_rtcp/source/flexfec_receiver.cc +++ b/modules/rtp_rtcp/source/flexfec_receiver.cc @@ -14,6 +14,8 @@ #include "api/array_view.h" #include "api/scoped_refptr.h" +#include "api/units/time_delta.h" +#include "api/units/timestamp.h" #include "rtc_base/checks.h" #include "rtc_base/logging.h" @@ -25,7 +27,7 @@ namespace { constexpr size_t kMinFlexfecHeaderSize = 20; // How often to log the recovered packets to the text log. -constexpr int kPacketLogIntervalMs = 10000; +constexpr TimeDelta kPacketLogInterval = TimeDelta::Seconds(10); } // namespace @@ -48,8 +50,7 @@ FlexfecReceiver::FlexfecReceiver( erasure_code_( ForwardErrorCorrection::CreateFlexfec(ssrc, protected_media_ssrc)), recovered_packet_receiver_(recovered_packet_receiver), - clock_(clock), - last_recovered_packet_ms_(-1) { + clock_(clock) { // It's OK to create this object on a different thread/task queue than // the one used during main operation. sequence_checker_.Detach(); @@ -173,9 +174,9 @@ void FlexfecReceiver::ProcessReceivedPacket( recovered_packet_receiver_->OnRecoveredPacket(parsed_packet); // Periodically log the incoming packets at LS_INFO. - int64_t now_ms = clock_->TimeInMilliseconds(); + Timestamp now = clock_->CurrentTime(); bool should_log_periodically = - now_ms - last_recovered_packet_ms_ > kPacketLogIntervalMs; + now - last_recovered_packet_ > kPacketLogInterval; if (RTC_LOG_CHECK_LEVEL(LS_VERBOSE) || should_log_periodically) { rtc::LoggingSeverity level = should_log_periodically ? rtc::LS_INFO : rtc::LS_VERBOSE; @@ -185,7 +186,7 @@ void FlexfecReceiver::ProcessReceivedPacket( << recovered_packet->pkt->data.size() << " from FlexFEC stream with SSRC: " << ssrc_; if (should_log_periodically) { - last_recovered_packet_ms_ = now_ms; + last_recovered_packet_ = now; } } } diff --git a/modules/rtp_rtcp/source/flexfec_sender.cc b/modules/rtp_rtcp/source/flexfec_sender.cc index 292fe4a8dd..c8bac0114d 100644 --- a/modules/rtp_rtcp/source/flexfec_sender.cc +++ b/modules/rtp_rtcp/source/flexfec_sender.cc @@ -16,6 +16,8 @@ #include #include "absl/strings/string_view.h" +#include "api/units/time_delta.h" +#include "api/units/timestamp.h" #include "modules/rtp_rtcp/include/rtp_rtcp_defines.h" #include "modules/rtp_rtcp/source/forward_error_correction.h" #include "modules/rtp_rtcp/source/rtp_header_extensions.h" @@ -42,7 +44,7 @@ constexpr size_t kFlexfecMaxHeaderSize = 32; const int kMsToRtpTimestamp = kVideoPayloadTypeFrequency / 1000; // How often to log the generated FEC packets to the text log. -constexpr int64_t kPacketLogIntervalMs = 10000; +constexpr TimeDelta kPacketLogInterval = TimeDelta::Seconds(10); RtpHeaderExtensionMap RegisterSupportedExtensions( const std::vector& rtp_header_extensions) { @@ -79,7 +81,6 @@ FlexfecSender::FlexfecSender( Clock* clock) : clock_(clock), random_(clock_->TimeInMicroseconds()), - last_generated_packet_ms_(-1), payload_type_(payload_type), // Reset RTP state if this is not the first time we are operating. // Otherwise, randomize the initial timestamp offset and RTP sequence @@ -168,17 +169,17 @@ std::vector> FlexfecSender::GetFecPackets() { ulpfec_generator_.ResetState(); } - int64_t now_ms = clock_->TimeInMilliseconds(); + Timestamp now = clock_->CurrentTime(); if (!fec_packets_to_send.empty() && - now_ms - last_generated_packet_ms_ > kPacketLogIntervalMs) { + now - last_generated_packet_ > kPacketLogInterval) { RTC_LOG(LS_VERBOSE) << "Generated " << fec_packets_to_send.size() << " FlexFEC packets with payload type: " << payload_type_ << " and SSRC: " << ssrc_ << "."; - last_generated_packet_ms_ = now_ms; + last_generated_packet_ = now; } MutexLock lock(&mutex_); - fec_bitrate_.Update(total_fec_data_bytes, now_ms); + fec_bitrate_.Update(total_fec_data_bytes, now.ms()); return fec_packets_to_send; }