Splits SendTimeHistory::AddAndRemoveOld into Add/Remove.

Bug: webrtc:9883
Change-Id: I710e6011b63ffd09eb2b115716f6841c88e85c1e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/137511
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28014}
diff --git a/modules/congestion_controller/rtp/send_time_history.cc b/modules/congestion_controller/rtp/send_time_history.cc
index 111389b..9101f4a 100644
--- a/modules/congestion_controller/rtp/send_time_history.cc
+++ b/modules/congestion_controller/rtp/send_time_history.cc
@@ -24,9 +24,7 @@
 
 SendTimeHistory::~SendTimeHistory() {}
 
-void SendTimeHistory::AddAndRemoveOld(const PacketFeedback& packet,
-                                      int64_t at_time_ms) {
-  // Remove old.
+void SendTimeHistory::RemoveOld(int64_t at_time_ms) {
   while (!history_.empty() &&
          at_time_ms - history_.begin()->second.creation_time_ms >
              packet_age_limit_ms_) {
@@ -34,18 +32,24 @@
     RemovePacketBytes(history_.begin()->second);
     history_.erase(history_.begin());
   }
+}
 
-  // Add new.
-  int64_t unwrapped_seq_num = seq_num_unwrapper_.Unwrap(packet.sequence_number);
-  PacketFeedback packet_copy = packet;
-  packet_copy.long_sequence_number = unwrapped_seq_num;
-  history_.insert(std::make_pair(unwrapped_seq_num, packet_copy));
+void SendTimeHistory::AddNewPacket(PacketFeedback packet) {
+  packet.long_sequence_number =
+      seq_num_unwrapper_.Unwrap(packet.sequence_number);
+  history_.insert(std::make_pair(packet.long_sequence_number, packet));
   if (packet.send_time_ms >= 0) {
-    AddPacketBytes(packet_copy);
+    AddPacketBytes(packet);
     last_send_time_ms_ = std::max(last_send_time_ms_, packet.send_time_ms);
   }
 }
 
+void SendTimeHistory::AddAndRemoveOld(const PacketFeedback& packet,
+                                      int64_t at_time_ms) {
+  RemoveOld(at_time_ms);
+  AddNewPacket(packet);
+}
+
 void SendTimeHistory::AddUntracked(size_t packet_size, int64_t send_time_ms) {
   if (send_time_ms < last_send_time_ms_) {
     RTC_LOG(LS_WARNING) << "ignoring untracked data for out of order packet.";
diff --git a/modules/congestion_controller/rtp/send_time_history.h b/modules/congestion_controller/rtp/send_time_history.h
index 65ef318..c3004c1 100644
--- a/modules/congestion_controller/rtp/send_time_history.h
+++ b/modules/congestion_controller/rtp/send_time_history.h
@@ -29,6 +29,8 @@
   ~SendTimeHistory();
 
   // Cleanup old entries, then add new packet info with provided parameters.
+  void RemoveOld(int64_t at_time_ms);
+  void AddNewPacket(PacketFeedback packet);
   void AddAndRemoveOld(const PacketFeedback& packet, int64_t at_time_ms);
 
   void AddUntracked(size_t packet_size, int64_t send_time_ms);
diff --git a/modules/congestion_controller/rtp/transport_feedback_adapter.cc b/modules/congestion_controller/rtp/transport_feedback_adapter.cc
index 02e2088..219f426 100644
--- a/modules/congestion_controller/rtp/transport_feedback_adapter.cc
+++ b/modules/congestion_controller/rtp/transport_feedback_adapter.cc
@@ -13,6 +13,7 @@
 #include <stdlib.h>
 #include <algorithm>
 #include <cmath>
+#include <utility>
 
 #include "api/units/timestamp.h"
 #include "modules/rtp_rtcp/include/rtp_rtcp_defines.h"
@@ -88,7 +89,8 @@
       packet_feedback.ssrc = packet_info.ssrc;
       packet_feedback.rtp_sequence_number = packet_info.rtp_sequence_number;
     }
-    send_time_history_.AddAndRemoveOld(packet_feedback, creation_time.ms());
+    send_time_history_.RemoveOld(creation_time.ms());
+    send_time_history_.AddNewPacket(std::move(packet_feedback));
   }
 
   {