Index: webrtc/modules/remote_bitrate_estimator/send_time_history.cc |
diff --git a/webrtc/modules/remote_bitrate_estimator/send_time_history.cc b/webrtc/modules/remote_bitrate_estimator/send_time_history.cc |
index fa51daddb6d11b0bea941c2d41e9bce84704be53..a58d12a1600d3744818b486a0cfc1911b82a3e5d 100644 |
--- a/webrtc/modules/remote_bitrate_estimator/send_time_history.cc |
+++ b/webrtc/modules/remote_bitrate_estimator/send_time_history.cc |
@@ -14,9 +14,10 @@ |
namespace webrtc { |
-SendTimeHistory::SendTimeHistory(int64_t packet_age_limit) |
- : packet_age_limit_(packet_age_limit), oldest_sequence_number_(0) { |
-} |
+SendTimeHistory::SendTimeHistory(Clock* clock, int64_t packet_age_limit) |
+ : clock_(clock), |
+ packet_age_limit_(packet_age_limit), |
+ oldest_sequence_number_(0) {} |
SendTimeHistory::~SendTimeHistory() { |
} |
@@ -25,18 +26,21 @@ void SendTimeHistory::Clear() { |
history_.clear(); |
} |
-void SendTimeHistory::AddAndRemoveOld(const PacketInfo& packet) { |
- EraseOld(packet.send_time_ms - packet_age_limit_); |
+void SendTimeHistory::AddAndRemoveOld(uint16_t sequence_number, |
+ size_t length, |
+ bool was_paced) { |
+ EraseOld(); |
if (history_.empty()) |
- oldest_sequence_number_ = packet.sequence_number; |
+ oldest_sequence_number_ = sequence_number; |
- history_.insert( |
- std::pair<uint16_t, PacketInfo>(packet.sequence_number, packet)); |
+ history_.insert(std::pair<uint16_t, PacketInfo>( |
+ sequence_number, PacketInfo(clock_->TimeInMilliseconds(), 0, -1, |
+ sequence_number, length, was_paced))); |
} |
-bool SendTimeHistory::UpdateSendTime(uint16_t sequence_number, |
- int64_t send_time_ms) { |
+bool SendTimeHistory::OnSentPacket(uint16_t sequence_number, |
+ int64_t send_time_ms) { |
auto it = history_.find(sequence_number); |
if (it == history_.end()) |
return false; |
@@ -44,13 +48,15 @@ bool SendTimeHistory::UpdateSendTime(uint16_t sequence_number, |
return true; |
} |
-void SendTimeHistory::EraseOld(int64_t limit) { |
+void SendTimeHistory::EraseOld() { |
while (!history_.empty()) { |
auto it = history_.find(oldest_sequence_number_); |
assert(it != history_.end()); |
- if (it->second.send_time_ms > limit) |
+ if (clock_->TimeInMilliseconds() - it->second.creation_time_ms <= |
+ packet_age_limit_) { |
return; // Oldest packet within age limit, return. |
+ } |
// TODO(sprang): Warn if erasing (too many) old items? |
history_.erase(it); |