Moves RtpSequenceNumberMap from RtpSenderVideo to RtpSenderEgress.

Bug: webrtc:11340
Change-Id: Icd9032e3589324cb9ee7b699b38a35e733081e55
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/168192
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30481}
diff --git a/modules/rtp_rtcp/source/rtp_sender_video.cc b/modules/rtp_rtcp/source/rtp_sender_video.cc
index 99fb822..532e069 100644
--- a/modules/rtp_rtcp/source/rtp_sender_video.cc
+++ b/modules/rtp_rtcp/source/rtp_sender_video.cc
@@ -41,7 +41,6 @@
 
 namespace {
 constexpr size_t kRedForFecHeaderLength = 1;
-constexpr size_t kRtpSequenceNumberMapMaxEntries = 1 << 13;
 constexpr int64_t kMaxUnretransmittableFrameIntervalMs = 33 * 4;
 
 // This is experimental field trial to exclude transport sequence number from
@@ -253,7 +252,6 @@
                                PlayoutDelayOracle* playout_delay_oracle,
                                FrameEncryptorInterface* frame_encryptor,
                                bool require_frame_encryption,
-                               bool need_rtp_packet_infos,
                                bool enable_retransmit_all_layers,
                                const WebRtcKeyValueConfig& field_trials)
     : RTPSenderVideo([&] {
@@ -263,7 +261,6 @@
         config.flexfec_sender = flexfec_sender;
         config.frame_encryptor = frame_encryptor;
         config.require_frame_encryption = require_frame_encryption;
-        config.need_rtp_packet_infos = need_rtp_packet_infos;
         config.enable_retransmit_all_layers = enable_retransmit_all_layers;
         config.field_trials = &field_trials;
         return config;
@@ -280,10 +277,6 @@
       transmit_color_space_next_frame_(false),
       current_playout_delay_{-1, -1},
       playout_delay_pending_(false),
-      rtp_sequence_number_map_(config.need_rtp_packet_infos
-                                   ? std::make_unique<RtpSequenceNumberMap>(
-                                         kRtpSequenceNumberMapMaxEntries)
-                                   : nullptr),
       red_payload_type_(config.red_payload_type),
       ulpfec_payload_type_(config.ulpfec_payload_type),
       flexfec_sender_(config.flexfec_sender),
@@ -729,7 +722,6 @@
   if (num_packets == 0)
     return false;
 
-  uint16_t first_sequence_number;
   bool first_frame = first_frame_sent_();
   std::vector<std::unique_ptr<RtpPacketToSend>> rtp_packets;
   for (size_t i = 0; i < num_packets; ++i) {
@@ -753,16 +745,14 @@
       expected_payload_capacity = limits.max_payload_len;
     }
 
+    packet->set_first_packet_of_frame(i == 0);
+
     if (!packetizer->NextPacket(packet.get()))
       return false;
     RTC_DCHECK_LE(packet->payload_size(), expected_payload_capacity);
     if (!rtp_sender_->AssignSequenceNumber(packet.get()))
       return false;
 
-    if (rtp_sequence_number_map_ && i == 0) {
-      first_sequence_number = packet->SequenceNumber();
-    }
-
     // No FEC protection for upper temporal layers, if used.
     bool protect_packet = temporal_id == 0 || temporal_id == kNoTemporalIdx;
 
@@ -802,13 +792,6 @@
     }
   }
 
-  if (rtp_sequence_number_map_) {
-    const uint32_t timestamp = rtp_timestamp - rtp_sender_->TimestampOffset();
-    rtc::CritScope cs(&crit_);
-    rtp_sequence_number_map_->InsertFrame(first_sequence_number, num_packets,
-                                          timestamp);
-  }
-
   LogAndSendToNetwork(std::move(rtp_packets), unpacketized_payload_size);
 
   TRACE_EVENT_ASYNC_END1("webrtc", "Video", capture_time_ms, "timestamp",
@@ -832,37 +815,6 @@
       .value_or(0);
 }
 
-std::vector<RtpSequenceNumberMap::Info> RTPSenderVideo::GetSentRtpPacketInfos(
-    rtc::ArrayView<const uint16_t> sequence_numbers) const {
-  RTC_DCHECK(!sequence_numbers.empty());
-
-  std::vector<RtpSequenceNumberMap::Info> results;
-  if (!rtp_sequence_number_map_) {
-    return results;
-  }
-  results.reserve(sequence_numbers.size());
-
-  {
-    rtc::CritScope cs(&crit_);
-    for (uint16_t sequence_number : sequence_numbers) {
-      const absl::optional<RtpSequenceNumberMap::Info> info =
-          rtp_sequence_number_map_->Get(sequence_number);
-      if (!info) {
-        // The empty vector will be returned. We can delay the clearing
-        // of the vector until after we exit the critical section.
-        break;
-      }
-      results.push_back(*info);
-    }
-  }
-
-  if (results.size() != sequence_numbers.size()) {
-    results.clear();  // Some sequence number was not found.
-  }
-
-  return results;
-}
-
 bool RTPSenderVideo::AllowRetransmission(
     uint8_t temporal_id,
     int32_t retransmission_settings,