From 9c91887c3f47b037a412f045bee1fbf0302dd4ae Mon Sep 17 00:00:00 2001 From: Sebastian Jansson Date: Mon, 20 May 2019 19:07:48 +0200 Subject: [PATCH] Splits SendTimeHistory::AddAndRemoveOld into Add/Remove. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug: webrtc:9883 Change-Id: I710e6011b63ffd09eb2b115716f6841c88e85c1e Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/137511 Reviewed-by: Björn Terelius Commit-Queue: Sebastian Jansson Cr-Commit-Position: refs/heads/master@{#28014} --- .../rtp/send_time_history.cc | 22 +++++++++++-------- .../rtp/send_time_history.h | 2 ++ .../rtp/transport_feedback_adapter.cc | 4 +++- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/modules/congestion_controller/rtp/send_time_history.cc b/modules/congestion_controller/rtp/send_time_history.cc index 111389be50..9101f4a1b7 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(int64_t packet_age_limit_ms) 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 @@ void SendTimeHistory::AddAndRemoveOld(const PacketFeedback& packet, 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 65ef3185d5..c3004c18dd 100644 --- a/modules/congestion_controller/rtp/send_time_history.h +++ b/modules/congestion_controller/rtp/send_time_history.h @@ -29,6 +29,8 @@ class SendTimeHistory { ~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 02e2088f14..219f426ab2 100644 --- a/modules/congestion_controller/rtp/transport_feedback_adapter.cc +++ b/modules/congestion_controller/rtp/transport_feedback_adapter.cc @@ -13,6 +13,7 @@ #include #include #include +#include #include "api/units/timestamp.h" #include "modules/rtp_rtcp/include/rtp_rtcp_defines.h" @@ -88,7 +89,8 @@ void TransportFeedbackAdapter::AddPacket(const RtpPacketSendInfo& packet_info, 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)); } {