Removes clock from TransportFeedbackAdapter.

Instead timestamps required for processing are provided explicitly.
This makes it easier to ensure correct usage in log processing
and simulation.

Bug: webrtc:10170
Change-Id: I724a6b9b94e83caa22b8e43b63ef4e6b46138e6a
Reviewed-on: https://webrtc-review.googlesource.com/c/118702
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26339}
diff --git a/call/rtp_transport_controller_send.cc b/call/rtp_transport_controller_send.cc
index a5fe7d5..e519a76 100644
--- a/call/rtp_transport_controller_send.cc
+++ b/call/rtp_transport_controller_send.cc
@@ -65,7 +65,6 @@
       bitrate_configurator_(bitrate_config),
       process_thread_(ProcessThread::Create("SendControllerThread")),
       observer_(nullptr),
-      transport_feedback_adapter_(clock_),
       controller_factory_override_(controller_factory),
       controller_factory_fallback_(
           absl::make_unique<GoogCcNetworkControllerFactory>(event_log)),
@@ -443,8 +442,9 @@
   if (send_side_bwe_with_overhead_) {
     length += transport_overhead_bytes_per_packet_;
   }
-  transport_feedback_adapter_.AddPacket(ssrc, sequence_number, length,
-                                        pacing_info);
+  transport_feedback_adapter_.AddPacket(
+      ssrc, sequence_number, length, pacing_info,
+      Timestamp::ms(clock_->TimeInMilliseconds()));
 }
 
 void RtpTransportControllerSend::OnTransportFeedback(
@@ -452,7 +452,8 @@
   RTC_DCHECK_RUNS_SERIALIZED(&worker_race_);
 
   absl::optional<TransportPacketsFeedback> feedback_msg =
-      transport_feedback_adapter_.ProcessTransportFeedback(feedback);
+      transport_feedback_adapter_.ProcessTransportFeedback(
+          feedback, Timestamp::ms(clock_->TimeInMilliseconds()));
   if (feedback_msg) {
     task_queue_.PostTask([this, feedback_msg]() {
       RTC_DCHECK_RUN_ON(&task_queue_);
diff --git a/logging/rtc_event_log/rtc_event_log_parser.cc b/logging/rtc_event_log/rtc_event_log_parser.cc
index abf6c7b..a4e3839 100644
--- a/logging/rtc_event_log/rtc_event_log_parser.cc
+++ b/logging/rtc_event_log/rtc_event_log_parser.cc
@@ -1782,7 +1782,7 @@
       parsed_log.transport_feedbacks(kIncomingPacket);
 
   SimulatedClock clock(0);
-  TransportFeedbackAdapter feedback_adapter(&clock);
+  TransportFeedbackAdapter feedback_adapter;
 
   auto rtp_iterator = outgoing_rtp.begin();
   auto rtcp_iterator = incoming_rtcp.begin();
@@ -1814,7 +1814,8 @@
         feedback_adapter.AddPacket(
             rtp_packet.rtp.header.ssrc,
             rtp_packet.rtp.header.extension.transportSequenceNumber,
-            rtp_packet.rtp.total_length, PacedPacketInfo());
+            rtp_packet.rtp.total_length, PacedPacketInfo(),
+            Timestamp::ms(clock.TimeInMilliseconds()));
         sent_packet.packet_id =
             rtp_packet.rtp.header.extension.transportSequenceNumber;
         sent_packet.info.included_in_feedback = true;
@@ -1832,7 +1833,8 @@
     if (clock.TimeInMicroseconds() >= NextRtcpTime()) {
       RTC_DCHECK_EQ(clock.TimeInMicroseconds(), NextRtcpTime());
       feedback_adapter.ProcessTransportFeedback(
-          rtcp_iterator->transport_feedback);
+          rtcp_iterator->transport_feedback,
+          Timestamp::ms(clock.TimeInMilliseconds()));
       std::vector<PacketFeedback> feedback =
           feedback_adapter.GetTransportFeedbackVector();
       SortPacketFeedbackVectorWithLoss(&feedback);
diff --git a/modules/congestion_controller/rtp/send_time_history.cc b/modules/congestion_controller/rtp/send_time_history.cc
index 5011da1..76450b2 100644
--- a/modules/congestion_controller/rtp/send_time_history.cc
+++ b/modules/congestion_controller/rtp/send_time_history.cc
@@ -16,21 +16,19 @@
 #include "modules/rtp_rtcp/include/rtp_rtcp_defines.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/logging.h"
-#include "system_wrappers/include/clock.h"
 
 namespace webrtc {
 
-SendTimeHistory::SendTimeHistory(const Clock* clock,
-                                 int64_t packet_age_limit_ms)
-    : clock_(clock), packet_age_limit_ms_(packet_age_limit_ms) {}
+SendTimeHistory::SendTimeHistory(int64_t packet_age_limit_ms)
+    : packet_age_limit_ms_(packet_age_limit_ms) {}
 
 SendTimeHistory::~SendTimeHistory() {}
 
-void SendTimeHistory::AddAndRemoveOld(const PacketFeedback& packet) {
-  int64_t now_ms = clock_->TimeInMilliseconds();
+void SendTimeHistory::AddAndRemoveOld(const PacketFeedback& packet,
+                                      int64_t at_time_ms) {
   // Remove old.
   while (!history_.empty() &&
-         now_ms - history_.begin()->second.creation_time_ms >
+         at_time_ms - history_.begin()->second.creation_time_ms >
              packet_age_limit_ms_) {
     // TODO(sprang): Warn if erasing (too many) old items?
     RemovePacketBytes(history_.begin()->second);
diff --git a/modules/congestion_controller/rtp/send_time_history.h b/modules/congestion_controller/rtp/send_time_history.h
index cba89b9..553ba15 100644
--- a/modules/congestion_controller/rtp/send_time_history.h
+++ b/modules/congestion_controller/rtp/send_time_history.h
@@ -19,16 +19,15 @@
 #include "rtc_base/constructor_magic.h"
 
 namespace webrtc {
-class Clock;
 struct PacketFeedback;
 
 class SendTimeHistory {
  public:
-  SendTimeHistory(const Clock* clock, int64_t packet_age_limit_ms);
+  explicit SendTimeHistory(int64_t packet_age_limit_ms);
   ~SendTimeHistory();
 
   // Cleanup old entries, then add new packet info with provided parameters.
-  void AddAndRemoveOld(const PacketFeedback& packet);
+  void AddAndRemoveOld(const PacketFeedback& packet, int64_t at_time_ms);
 
   void AddUntracked(size_t packet_size, int64_t send_time_ms);
 
@@ -55,7 +54,6 @@
   void AddPacketBytes(const PacketFeedback& packet);
   void RemovePacketBytes(const PacketFeedback& packet);
   void UpdateAckedSeqNum(int64_t acked_seq_num);
-  const Clock* const clock_;
   const int64_t packet_age_limit_ms_;
   size_t pending_untracked_size_ = 0;
   int64_t last_send_time_ms_ = -1;
diff --git a/modules/congestion_controller/rtp/send_time_history_unittest.cc b/modules/congestion_controller/rtp/send_time_history_unittest.cc
index 4cc3452..d872f89 100644
--- a/modules/congestion_controller/rtp/send_time_history_unittest.cc
+++ b/modules/congestion_controller/rtp/send_time_history_unittest.cc
@@ -26,8 +26,7 @@
 
 class SendTimeHistoryTest : public ::testing::Test {
  protected:
-  SendTimeHistoryTest()
-      : clock_(0), history_(&clock_, kDefaultHistoryLengthMs) {}
+  SendTimeHistoryTest() : clock_(0), history_(kDefaultHistoryLengthMs) {}
   ~SendTimeHistoryTest() {}
 
   virtual void SetUp() {}
@@ -40,7 +39,7 @@
                              const PacedPacketInfo& pacing_info) {
     PacketFeedback packet(clock_.TimeInMilliseconds(), sequence_number, length,
                           0, 0, pacing_info);
-    history_.AddAndRemoveOld(packet);
+    history_.AddAndRemoveOld(packet, clock_.TimeInMilliseconds());
     history_.OnSentPacket(sequence_number, send_time_ms);
   }
 
@@ -54,7 +53,7 @@
   int64_t now_ms = clock_.TimeInMilliseconds();
   for (int i = 1; i < 5; ++i) {
     PacketFeedback packet(now_ms, sequence_number, 1000, i, i - 1, kPacingInfo);
-    history_.AddAndRemoveOld(packet);
+    history_.AddAndRemoveOld(packet, clock_.TimeInMilliseconds());
     history_.OnSentPacket(sequence_number, now_ms);
     PacketFeedback restored(now_ms, sequence_number);
     EXPECT_TRUE(history_.GetFeedback(&restored, sequence_number++));
@@ -139,7 +138,7 @@
     PacketFeedback packet = sent_packets[i];
     packet.arrival_time_ms = PacketFeedback::kNotReceived;
     packet.send_time_ms = PacketFeedback::kNoSendTime;
-    history_.AddAndRemoveOld(packet);
+    history_.AddAndRemoveOld(packet, clock_.TimeInMilliseconds());
   }
   for (size_t i = 0; i < num_items; ++i)
     history_.OnSentPacket(sent_packets[i].sequence_number,
diff --git a/modules/congestion_controller/rtp/transport_feedback_adapter.cc b/modules/congestion_controller/rtp/transport_feedback_adapter.cc
index 662cbef..eb2bfe9 100644
--- a/modules/congestion_controller/rtp/transport_feedback_adapter.cc
+++ b/modules/congestion_controller/rtp/transport_feedback_adapter.cc
@@ -49,9 +49,8 @@
     rtcp::TransportFeedback::kDeltaScaleFactor * (1 << 8);
 const int64_t kBaseTimestampRangeSizeUs = kBaseTimestampScaleFactor * (1 << 24);
 
-TransportFeedbackAdapter::TransportFeedbackAdapter(const Clock* clock)
-    : send_time_history_(clock, kSendTimeHistoryWindowMs),
-      clock_(clock),
+TransportFeedbackAdapter::TransportFeedbackAdapter()
+    : send_time_history_(kSendTimeHistoryWindowMs),
       current_offset_ms_(kNoTimestamp),
       last_timestamp_us_(kNoTimestamp),
       local_net_id_(0),
@@ -82,13 +81,14 @@
 void TransportFeedbackAdapter::AddPacket(uint32_t ssrc,
                                          uint16_t sequence_number,
                                          size_t length,
-                                         const PacedPacketInfo& pacing_info) {
+                                         const PacedPacketInfo& pacing_info,
+                                         Timestamp creation_time) {
   {
     rtc::CritScope cs(&lock_);
-    const int64_t creation_time_ms = clock_->TimeInMilliseconds();
     send_time_history_.AddAndRemoveOld(
-        PacketFeedback(creation_time_ms, sequence_number, length, local_net_id_,
-                       remote_net_id_, pacing_info));
+        PacketFeedback(creation_time.ms(), sequence_number, length,
+                       local_net_id_, remote_net_id_, pacing_info),
+        creation_time.ms());
   }
 
   {
@@ -98,7 +98,6 @@
     }
   }
 }
-
 absl::optional<SentPacket> TransportFeedbackAdapter::ProcessSentPacket(
     const rtc::SentPacket& sent_packet) {
   rtc::CritScope cs(&lock_);
@@ -127,10 +126,19 @@
 
 absl::optional<TransportPacketsFeedback>
 TransportFeedbackAdapter::ProcessTransportFeedback(
-    const rtcp::TransportFeedback& feedback) {
-  int64_t feedback_time_ms = clock_->TimeInMilliseconds();
+    const rtcp::TransportFeedback& feedback,
+    Timestamp feedback_receive_time) {
   DataSize prior_in_flight = GetOutstandingData();
-  OnTransportFeedback(feedback);
+
+  last_packet_feedback_vector_ =
+      GetPacketFeedbackVector(feedback, feedback_receive_time);
+  {
+    rtc::CritScope cs(&observers_lock_);
+    for (auto* observer : observers_) {
+      observer->OnPacketFeedbackVector(last_packet_feedback_vector_);
+    }
+  }
+
   std::vector<PacketFeedback> feedback_vector = last_packet_feedback_vector_;
   if (feedback_vector.empty())
     return absl::nullopt;
@@ -155,7 +163,7 @@
     if (first_unacked_send_time_ms)
       msg.first_unacked_send_time = Timestamp::ms(*first_unacked_send_time_ms);
   }
-  msg.feedback_time = Timestamp::ms(feedback_time_ms);
+  msg.feedback_time = feedback_receive_time;
   msg.prior_in_flight = prior_in_flight;
   msg.data_in_flight = GetOutstandingData();
   return msg;
@@ -174,14 +182,15 @@
 }
 
 std::vector<PacketFeedback> TransportFeedbackAdapter::GetPacketFeedbackVector(
-    const rtcp::TransportFeedback& feedback) {
+    const rtcp::TransportFeedback& feedback,
+    Timestamp feedback_time) {
   int64_t timestamp_us = feedback.GetBaseTimeUs();
-  int64_t now_ms = clock_->TimeInMilliseconds();
+
   // Add timestamp deltas to a local time base selected on first packet arrival.
   // This won't be the true time base, but makes it easier to manually inspect
   // time stamps.
   if (last_timestamp_us_ == kNoTimestamp) {
-    current_offset_ms_ = now_ms;
+    current_offset_ms_ = feedback_time.ms();
   } else {
     int64_t delta = timestamp_us - last_timestamp_us_;
 
@@ -246,19 +255,9 @@
   return packet_feedback_vector;
 }
 
-void TransportFeedbackAdapter::OnTransportFeedback(
-    const rtcp::TransportFeedback& feedback) {
-  last_packet_feedback_vector_ = GetPacketFeedbackVector(feedback);
-  {
-    rtc::CritScope cs(&observers_lock_);
-    for (auto* observer : observers_) {
-      observer->OnPacketFeedbackVector(last_packet_feedback_vector_);
-    }
-  }
-}
-
 std::vector<PacketFeedback>
 TransportFeedbackAdapter::GetTransportFeedbackVector() const {
   return last_packet_feedback_vector_;
 }
+
 }  // namespace webrtc
diff --git a/modules/congestion_controller/rtp/transport_feedback_adapter.h b/modules/congestion_controller/rtp/transport_feedback_adapter.h
index eb90b5d..7df0baa 100644
--- a/modules/congestion_controller/rtp/transport_feedback_adapter.h
+++ b/modules/congestion_controller/rtp/transport_feedback_adapter.h
@@ -20,7 +20,6 @@
 #include "rtc_base/network/sent_packet.h"
 #include "rtc_base/thread_annotations.h"
 #include "rtc_base/thread_checker.h"
-#include "system_wrappers/include/clock.h"
 
 namespace webrtc {
 
@@ -32,7 +31,7 @@
 
 class TransportFeedbackAdapter {
  public:
-  explicit TransportFeedbackAdapter(const Clock* clock);
+  TransportFeedbackAdapter();
   virtual ~TransportFeedbackAdapter();
 
   void RegisterPacketFeedbackObserver(PacketFeedbackObserver* observer);
@@ -41,13 +40,15 @@
   void AddPacket(uint32_t ssrc,
                  uint16_t sequence_number,
                  size_t length,
-                 const PacedPacketInfo& pacing_info);
+                 const PacedPacketInfo& pacing_info,
+                 Timestamp creation_time);
 
   absl::optional<SentPacket> ProcessSentPacket(
       const rtc::SentPacket& sent_packet);
 
   absl::optional<TransportPacketsFeedback> ProcessTransportFeedback(
-      const rtcp::TransportFeedback& feedback);
+      const rtcp::TransportFeedback& feedback,
+      Timestamp feedback_time);
 
   std::vector<PacketFeedback> GetTransportFeedbackVector() const;
 
@@ -59,11 +60,11 @@
   void OnTransportFeedback(const rtcp::TransportFeedback& feedback);
 
   std::vector<PacketFeedback> GetPacketFeedbackVector(
-      const rtcp::TransportFeedback& feedback);
+      const rtcp::TransportFeedback& feedback,
+      Timestamp feedback_time);
 
   rtc::CriticalSection lock_;
   SendTimeHistory send_time_history_ RTC_GUARDED_BY(&lock_);
-  const Clock* const clock_;
   int64_t current_offset_ms_;
   int64_t last_timestamp_us_;
   std::vector<PacketFeedback> last_packet_feedback_vector_;
diff --git a/modules/congestion_controller/rtp/transport_feedback_adapter_unittest.cc b/modules/congestion_controller/rtp/transport_feedback_adapter_unittest.cc
index d1404df..e48ac59 100644
--- a/modules/congestion_controller/rtp/transport_feedback_adapter_unittest.cc
+++ b/modules/congestion_controller/rtp/transport_feedback_adapter_unittest.cc
@@ -52,9 +52,7 @@
 
   virtual ~TransportFeedbackAdapterTest() {}
 
-  virtual void SetUp() {
-    adapter_.reset(new TransportFeedbackAdapter(&clock_));
-  }
+  virtual void SetUp() { adapter_.reset(new TransportFeedbackAdapter()); }
 
   virtual void TearDown() { adapter_.reset(); }
 
@@ -68,7 +66,8 @@
   void OnSentPacket(const PacketFeedback& packet_feedback) {
     adapter_->AddPacket(kSsrc, packet_feedback.sequence_number,
                         packet_feedback.payload_size,
-                        packet_feedback.pacing_info);
+                        packet_feedback.pacing_info,
+                        Timestamp::ms(clock_.TimeInMilliseconds()));
     adapter_->ProcessSentPacket(rtc::SentPacket(packet_feedback.sequence_number,
                                                 packet_feedback.send_time_ms,
                                                 rtc::PacketInfo()));
@@ -101,7 +100,8 @@
   }
 
   EXPECT_CALL(mock, OnPacketFeedbackVector(_)).Times(1);
-  adapter_->ProcessTransportFeedback(feedback);
+  adapter_->ProcessTransportFeedback(
+      feedback, Timestamp::ms(clock_.TimeInMilliseconds()));
 
   adapter_->DeRegisterPacketFeedbackObserver(&mock);
 
@@ -116,7 +116,8 @@
   EXPECT_TRUE(feedback.AddReceivedPacket(new_packet.sequence_number,
                                          new_packet.arrival_time_ms * 1000));
   EXPECT_CALL(mock, OnPacketFeedbackVector(_)).Times(0);
-  adapter_->ProcessTransportFeedback(second_feedback);
+  adapter_->ProcessTransportFeedback(
+      second_feedback, Timestamp::ms(clock_.TimeInMilliseconds()));
 }
 
 #if RTC_DCHECK_IS_ON && GTEST_HAS_DEATH_TEST && !defined(WEBRTC_ANDROID)
@@ -157,7 +158,8 @@
 
   feedback.Build();
 
-  adapter_->ProcessTransportFeedback(feedback);
+  adapter_->ProcessTransportFeedback(
+      feedback, Timestamp::ms(clock_.TimeInMilliseconds()));
   ComparePacketFeedbackVectors(packets, adapter_->GetTransportFeedbackVector());
 }
 
@@ -190,7 +192,8 @@
 
   feedback.Build();
 
-  adapter_->ProcessTransportFeedback(feedback);
+  adapter_->ProcessTransportFeedback(
+      feedback, Timestamp::ms(clock_.TimeInMilliseconds()));
   ComparePacketFeedbackVectors(sent_packets,
                                adapter_->GetTransportFeedbackVector());
 }
@@ -234,7 +237,8 @@
     expected_packets[i].pacing_info = PacedPacketInfo();
   }
 
-  adapter_->ProcessTransportFeedback(feedback);
+  adapter_->ProcessTransportFeedback(
+      feedback, Timestamp::ms(clock_.TimeInMilliseconds()));
   ComparePacketFeedbackVectors(expected_packets,
                                adapter_->GetTransportFeedbackVector());
 }
@@ -270,7 +274,8 @@
     std::vector<PacketFeedback> expected_packets;
     expected_packets.push_back(packets[i]);
 
-    adapter_->ProcessTransportFeedback(*feedback.get());
+    adapter_->ProcessTransportFeedback(
+        *feedback.get(), Timestamp::ms(clock_.TimeInMilliseconds()));
     ComparePacketFeedbackVectors(expected_packets,
                                  adapter_->GetTransportFeedbackVector());
   }
@@ -299,7 +304,8 @@
   // Adapter keeps the packets ordered by sequence number (which is itself
   // assigned by the order of transmission). Reordering by some other criteria,
   // eg. arrival time, is up to the observers.
-  adapter_->ProcessTransportFeedback(feedback);
+  adapter_->ProcessTransportFeedback(
+      feedback, Timestamp::ms(clock_.TimeInMilliseconds()));
   ComparePacketFeedbackVectors(packets, adapter_->GetTransportFeedbackVector());
 }
 
@@ -363,7 +369,8 @@
   std::vector<PacketFeedback> received_feedback;
 
   EXPECT_TRUE(feedback.get() != nullptr);
-  adapter_->ProcessTransportFeedback(*feedback.get());
+  adapter_->ProcessTransportFeedback(
+      *feedback.get(), Timestamp::ms(clock_.TimeInMilliseconds()));
   ComparePacketFeedbackVectors(sent_packets,
                                adapter_->GetTransportFeedbackVector());
 
@@ -378,7 +385,8 @@
       rtcp::TransportFeedback::ParseFrom(raw_packet.data(), raw_packet.size());
 
   EXPECT_TRUE(feedback.get() != nullptr);
-  adapter_->ProcessTransportFeedback(*feedback.get());
+  adapter_->ProcessTransportFeedback(
+      *feedback.get(), Timestamp::ms(clock_.TimeInMilliseconds()));
   {
     std::vector<PacketFeedback> expected_packets;
     expected_packets.push_back(packet_feedback);
diff --git a/modules/congestion_controller/transport_feedback_adapter.cc b/modules/congestion_controller/transport_feedback_adapter.cc
index d56a05b..b58b0a9 100644
--- a/modules/congestion_controller/transport_feedback_adapter.cc
+++ b/modules/congestion_controller/transport_feedback_adapter.cc
@@ -31,7 +31,7 @@
 
 LegacyTransportFeedbackAdapter::LegacyTransportFeedbackAdapter(
     const Clock* clock)
-    : send_time_history_(clock, kSendTimeHistoryWindowMs),
+    : send_time_history_(kSendTimeHistoryWindowMs),
       clock_(clock),
       current_offset_ms_(kNoTimestamp),
       last_timestamp_us_(kNoTimestamp),
@@ -70,7 +70,8 @@
     const int64_t creation_time_ms = clock_->TimeInMilliseconds();
     send_time_history_.AddAndRemoveOld(
         PacketFeedback(creation_time_ms, sequence_number, length, local_net_id_,
-                       remote_net_id_, pacing_info));
+                       remote_net_id_, pacing_info),
+        creation_time_ms);
   }
 
   {
diff --git a/modules/remote_bitrate_estimator/test/estimators/send_side.cc b/modules/remote_bitrate_estimator/test/estimators/send_side.cc
index 692a0d4..7b33cd4 100644
--- a/modules/remote_bitrate_estimator/test/estimators/send_side.cc
+++ b/modules/remote_bitrate_estimator/test/estimators/send_side.cc
@@ -41,7 +41,7 @@
       bwe_(new DelayBasedBwe(&field_trial_config_, nullptr)),
       feedback_observer_(bitrate_controller_.get()),
       clock_(clock),
-      send_time_history_(clock_, 10000),
+      send_time_history_(10000),
       has_received_ack_(false),
       last_acked_seq_num_(0),
       last_log_time_ms_(0) {
@@ -134,7 +134,8 @@
       PacketFeedback packet_feedback(
           clock_->TimeInMilliseconds(), media_packet->header().sequenceNumber,
           media_packet->payload_size(), 0, 0, PacedPacketInfo());
-      send_time_history_.AddAndRemoveOld(packet_feedback);
+      send_time_history_.AddAndRemoveOld(packet_feedback,
+                                         clock_->TimeInMilliseconds());
       send_time_history_.OnSentPacket(media_packet->header().sequenceNumber,
                                       media_packet->sender_timestamp_ms());
     }
diff --git a/rtc_tools/event_log_visualizer/analyzer.cc b/rtc_tools/event_log_visualizer/analyzer.cc
index f603784..79e1e17 100644
--- a/rtc_tools/event_log_visualizer/analyzer.cc
+++ b/rtc_tools/event_log_visualizer/analyzer.cc
@@ -1076,7 +1076,7 @@
   RtcEventLogNullImpl null_event_log;
   PacketRouter packet_router;
   PacedSender pacer(&clock, &packet_router, &null_event_log);
-  TransportFeedbackAdapter transport_feedback(&clock);
+  TransportFeedbackAdapter transport_feedback;
   auto factory = GoogCcNetworkControllerFactory(&null_event_log);
   TimeDelta process_interval = factory.GetProcessInterval();
   // TODO(holmer): Log the call config and use that here instead.
@@ -1144,7 +1144,8 @@
         transport_feedback.AddPacket(
             rtp_packet.rtp.header.ssrc,
             rtp_packet.rtp.header.extension.transportSequenceNumber,
-            rtp_packet.rtp.total_length, PacedPacketInfo());
+            rtp_packet.rtp.total_length, PacedPacketInfo(),
+            Timestamp::us(rtp_packet.rtp.log_time_us()));
         rtc::SentPacket sent_packet(
             rtp_packet.rtp.header.extension.transportSequenceNumber,
             rtp_packet.rtp.log_time_us() / 1000);
@@ -1158,7 +1159,8 @@
       RTC_DCHECK_EQ(clock.TimeInMicroseconds(), NextRtcpTime());
 
       auto feedback_msg = transport_feedback.ProcessTransportFeedback(
-          rtcp_iterator->transport_feedback);
+          rtcp_iterator->transport_feedback,
+          Timestamp::ms(clock.TimeInMilliseconds()));
       absl::optional<uint32_t> bitrate_bps;
       if (feedback_msg) {
         observer.Update(goog_cc->OnTransportPacketsFeedback(*feedback_msg));