Calls OnPacketsAcknowledged on RtpRtcp instead of RTPSender directly.

This prepares for splitting RtpSenderEgress out of RTPSender.
For context, see:
https://webrtc-review.googlesource.com/c/src/+/158020

Bug: webrtc:11036
Change-Id: I6d385ba255ce23f4c6685a3737eeb243ce2ec6ff
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/158201
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29601}
diff --git a/call/rtp_video_sender.cc b/call/rtp_video_sender.cc
index 4f62061..8b34048 100644
--- a/call/rtp_video_sender.cc
+++ b/call/rtp_video_sender.cc
@@ -583,7 +583,7 @@
 
 void RtpVideoSender::ConfigureSsrcs() {
   // Configure regular SSRCs.
-  RTC_CHECK(ssrc_to_rtp_sender_.empty());
+  RTC_CHECK(ssrc_to_rtp_module_.empty());
   for (size_t i = 0; i < rtp_config_.ssrcs.size(); ++i) {
     uint32_t ssrc = rtp_config_.ssrcs[i];
     RtpRtcp* const rtp_rtcp = rtp_streams_[i].rtp_rtcp.get();
@@ -593,9 +593,7 @@
     if (it != suspended_ssrcs_.end())
       rtp_rtcp->SetRtpState(it->second);
 
-    RTPSender* rtp_sender = rtp_rtcp->RtpSender();
-    RTC_DCHECK(rtp_sender != nullptr);
-    ssrc_to_rtp_sender_[ssrc] = rtp_sender;
+    ssrc_to_rtp_module_[ssrc] = rtp_rtcp;
   }
 
   // Set up RTX if available.
@@ -868,9 +866,9 @@
 
     for (const auto& kv : early_loss_detected_per_ssrc) {
       const uint32_t ssrc = kv.first;
-      auto it = ssrc_to_rtp_sender_.find(ssrc);
-      RTC_DCHECK(it != ssrc_to_rtp_sender_.end());
-      RTPSender* rtp_sender = it->second;
+      auto it = ssrc_to_rtp_module_.find(ssrc);
+      RTC_DCHECK(it != ssrc_to_rtp_module_.end());
+      RTPSender* rtp_sender = it->second->RtpSender();
       for (uint16_t sequence_number : kv.second) {
         rtp_sender->ReSendPacket(sequence_number);
       }
@@ -879,8 +877,8 @@
 
   for (const auto& kv : acked_packets_per_ssrc) {
     const uint32_t ssrc = kv.first;
-    auto it = ssrc_to_rtp_sender_.find(ssrc);
-    if (it == ssrc_to_rtp_sender_.end()) {
+    auto it = ssrc_to_rtp_module_.find(ssrc);
+    if (it == ssrc_to_rtp_module_.end()) {
       // Packets not for a media SSRC, so likely RTX or FEC. If so, ignore
       // since there's no RTP history to clean up anyway.
       continue;
diff --git a/call/rtp_video_sender.h b/call/rtp_video_sender.h
index 9458f13..88d7ab8 100644
--- a/call/rtp_video_sender.h
+++ b/call/rtp_video_sender.h
@@ -203,10 +203,10 @@
   std::vector<FrameCounts> frame_counts_ RTC_GUARDED_BY(crit_);
   FrameCountObserver* const frame_count_observer_;
 
-  // Effectively const map from ssrc to RTPSender, for all media ssrcs.
+  // Effectively const map from SSRC to RtpRtcp, for all media SSRCs.
   // This map is set at construction time and never changed, but it's
   // non-trivial to make it properly const.
-  std::map<uint32_t, RTPSender*> ssrc_to_rtp_sender_;
+  std::map<uint32_t, RtpRtcp*> ssrc_to_rtp_module_;
 
   RTC_DISALLOW_COPY_AND_ASSIGN(RtpVideoSender);
 };
diff --git a/modules/rtp_rtcp/include/rtp_rtcp.h b/modules/rtp_rtcp/include/rtp_rtcp.h
index adce964..2fea235 100644
--- a/modules/rtp_rtcp/include/rtp_rtcp.h
+++ b/modules/rtp_rtcp/include/rtp_rtcp.h
@@ -276,6 +276,9 @@
   virtual bool TrySendPacket(RtpPacketToSend* packet,
                              const PacedPacketInfo& pacing_info) = 0;
 
+  virtual void OnPacketsAcknowledged(
+      rtc::ArrayView<const uint16_t> sequence_numbers) = 0;
+
   virtual std::vector<std::unique_ptr<RtpPacketToSend>> GeneratePadding(
       size_t target_size_bytes) = 0;
 
diff --git a/modules/rtp_rtcp/mocks/mock_rtp_rtcp.h b/modules/rtp_rtcp/mocks/mock_rtp_rtcp.h
index 332f243..6102e0a 100644
--- a/modules/rtp_rtcp/mocks/mock_rtp_rtcp.h
+++ b/modules/rtp_rtcp/mocks/mock_rtp_rtcp.h
@@ -89,6 +89,7 @@
   MOCK_METHOD2(TrySendPacket,
                bool(RtpPacketToSend* packet,
                     const PacedPacketInfo& pacing_info));
+  MOCK_METHOD1(OnPacketsAcknowledged, void(rtc::ArrayView<const uint16_t>));
   MOCK_METHOD1(
       GeneratePadding,
       std::vector<std::unique_ptr<RtpPacketToSend>>(size_t target_size_bytes));
diff --git a/modules/rtp_rtcp/source/rtp_rtcp_impl.cc b/modules/rtp_rtcp/source/rtp_rtcp_impl.cc
index c7cbf50..f490439 100644
--- a/modules/rtp_rtcp/source/rtp_rtcp_impl.cc
+++ b/modules/rtp_rtcp/source/rtp_rtcp_impl.cc
@@ -342,6 +342,12 @@
   return rtp_sender_->TrySendPacket(packet, pacing_info);
 }
 
+void ModuleRtpRtcpImpl::OnPacketsAcknowledged(
+    rtc::ArrayView<const uint16_t> sequence_numbers) {
+  RTC_DCHECK(rtp_sender_);
+  rtp_sender_->OnPacketsAcknowledged(sequence_numbers);
+}
+
 bool ModuleRtpRtcpImpl::SupportsPadding() const {
   return rtp_sender_->SupportsPadding();
 }
diff --git a/modules/rtp_rtcp/source/rtp_rtcp_impl.h b/modules/rtp_rtcp/source/rtp_rtcp_impl.h
index 03dd81c..01ef03a 100644
--- a/modules/rtp_rtcp/source/rtp_rtcp_impl.h
+++ b/modules/rtp_rtcp/source/rtp_rtcp_impl.h
@@ -133,6 +133,8 @@
   bool TrySendPacket(RtpPacketToSend* packet,
                      const PacedPacketInfo& pacing_info) override;
 
+  void OnPacketsAcknowledged(
+      rtc::ArrayView<const uint16_t> sequence_numbers) override;
 
   std::vector<std::unique_ptr<RtpPacketToSend>> GeneratePadding(
       size_t target_size_bytes) override;