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));
}
{