diff --git a/modules/congestion_controller/rtp/transport_feedback_adapter.cc b/modules/congestion_controller/rtp/transport_feedback_adapter.cc
index b99702b..bb2425d 100644
--- a/modules/congestion_controller/rtp/transport_feedback_adapter.cc
+++ b/modules/congestion_controller/rtp/transport_feedback_adapter.cc
@@ -78,19 +78,6 @@
   observers_.erase(it);
 }
 
-void TransportFeedbackAdapter::AddPacket(uint32_t ssrc,
-                                         uint16_t sequence_number,
-                                         size_t length,
-                                         const PacedPacketInfo& pacing_info,
-                                         Timestamp creation_time) {
-  RtpPacketSendInfo packet_info;
-  packet_info.ssrc = ssrc;
-  packet_info.transport_sequence_number = sequence_number;
-  packet_info.length = length;
-  packet_info.pacing_info = pacing_info;
-  AddPacket(packet_info, 0u, creation_time);
-}
-
 void TransportFeedbackAdapter::AddPacket(const RtpPacketSendInfo& packet_info,
                                          size_t overhead_bytes,
                                          Timestamp creation_time) {
diff --git a/modules/congestion_controller/rtp/transport_feedback_adapter.h b/modules/congestion_controller/rtp/transport_feedback_adapter.h
index 7c9884a..d347f2d 100644
--- a/modules/congestion_controller/rtp/transport_feedback_adapter.h
+++ b/modules/congestion_controller/rtp/transport_feedback_adapter.h
@@ -38,13 +38,6 @@
   void RegisterPacketFeedbackObserver(PacketFeedbackObserver* observer);
   void DeRegisterPacketFeedbackObserver(PacketFeedbackObserver* observer);
 
-  // TODO(webrtc:8975): Remove when downstream projects have been updated.
-  void AddPacket(uint32_t ssrc,
-                 uint16_t sequence_number,
-                 size_t length,
-                 const PacedPacketInfo& pacing_info,
-                 Timestamp creation_time);
-
   void AddPacket(const RtpPacketSendInfo& packet_info,
                  size_t overhead_bytes,
                  Timestamp creation_time);
diff --git a/modules/congestion_controller/rtp/transport_feedback_adapter_unittest.cc b/modules/congestion_controller/rtp/transport_feedback_adapter_unittest.cc
index fbd02dd..81c62ca 100644
--- a/modules/congestion_controller/rtp/transport_feedback_adapter_unittest.cc
+++ b/modules/congestion_controller/rtp/transport_feedback_adapter_unittest.cc
@@ -404,8 +404,12 @@
   const PacketFeedback packet(100, 200, 0, 1500, kPacingInfo0);
 
   // Add a packet and then mark it as sent.
-  adapter_->AddPacket(kSsrc, packet.sequence_number, packet.payload_size,
-                      packet.pacing_info,
+  RtpPacketSendInfo packet_info;
+  packet_info.ssrc = kSsrc;
+  packet_info.transport_sequence_number = packet.sequence_number;
+  packet_info.length = packet.payload_size;
+  packet_info.pacing_info = packet.pacing_info;
+  adapter_->AddPacket(packet_info, 0u,
                       Timestamp::ms(clock_.TimeInMilliseconds()));
   absl::optional<SentPacket> sent_packet =
       adapter_->ProcessSentPacket(rtc::SentPacket(
@@ -430,8 +434,12 @@
   const PacketFeedback packet(100, 200, 0, 1500, kPacingInfo0);
 
   // Add a packet and then mark it as sent.
-  adapter_->AddPacket(kSsrc, packet.sequence_number, packet.payload_size,
-                      packet.pacing_info,
+  RtpPacketSendInfo packet_info;
+  packet_info.ssrc = kSsrc;
+  packet_info.transport_sequence_number = packet.sequence_number;
+  packet_info.length = packet.payload_size;
+  packet_info.pacing_info = packet.pacing_info;
+  adapter_->AddPacket(packet_info, 0u,
                       Timestamp::ms(clock_.TimeInMilliseconds()));
   absl::optional<SentPacket> sent_packet =
       adapter_->ProcessSentPacket(rtc::SentPacket(
diff --git a/modules/rtp_rtcp/include/rtp_rtcp_defines.h b/modules/rtp_rtcp/include/rtp_rtcp_defines.h
index ac492f6..4a4b825 100644
--- a/modules/rtp_rtcp/include/rtp_rtcp_defines.h
+++ b/modules/rtp_rtcp/include/rtp_rtcp_defines.h
@@ -309,25 +309,7 @@
   TransportFeedbackObserver() {}
   virtual ~TransportFeedbackObserver() {}
 
-  // TODO(webrtc:8975): Remove when downstream projects have been updated.
-  virtual void AddPacket(uint32_t ssrc,
-                         uint16_t sequence_number,  // Transport-wide.
-                         size_t length,
-                         const PacedPacketInfo& pacing_info) {
-    RtpPacketSendInfo packet_info;
-    packet_info.ssrc = ssrc;
-    packet_info.transport_sequence_number = sequence_number;
-    packet_info.length = length;
-    packet_info.pacing_info = pacing_info;
-    OnAddPacket(packet_info);
-  }
-
-  virtual void OnAddPacket(const RtpPacketSendInfo& packet_info) {
-    // TODO(webrtc:8975): Remove when downstream projects have been updated.
-    AddPacket(packet_info.ssrc, packet_info.transport_sequence_number,
-              packet_info.length, packet_info.pacing_info);
-  }
-
+  virtual void OnAddPacket(const RtpPacketSendInfo& packet_info) = 0;
   virtual void OnTransportFeedback(const rtcp::TransportFeedback& feedback) = 0;
 };
 
