Use Timestamp type instead of int64_t in Flexfec classes

Bug: webrtc:13757
Change-Id: Ideafea65adb827b5457de22a04e3235cda3ffd5c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/301260
Commit-Queue: Rasmus Brandt <brandtr@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Auto-Submit: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#39948}
This commit is contained in:
Danil Chapovalov 2023-04-13 16:43:56 +02:00 committed by WebRTC LUCI CQ
parent b035dcc0a2
commit 52275845a0
4 changed files with 19 additions and 14 deletions

View File

@ -16,6 +16,7 @@
#include <memory>
#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_;

View File

@ -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_;

View File

@ -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;
}
}
}

View File

@ -16,6 +16,8 @@
#include <utility>
#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<RtpExtension>& 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<std::unique_ptr<RtpPacketToSend>> 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;
}