Remove NackSender argument from RtpVideoStreamReceiver2.

Bug: webrtc:14249
Change-Id: Ic6013c69da2d0f1345f688660521ea0c175ad896
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/267840
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#37496}
diff --git a/video/rtp_video_stream_receiver2.cc b/video/rtp_video_stream_receiver2.cc
index afc51fb..6cd2083 100644
--- a/video/rtp_video_stream_receiver2.cc
+++ b/video/rtp_video_stream_receiver2.cc
@@ -213,7 +213,6 @@
     RtcpPacketTypeCounterObserver* rtcp_packet_type_counter_observer,
     RtcpCnameCallback* rtcp_cname_callback,
     NackPeriodicProcessor* nack_periodic_processor,
-    NackSender* nack_sender,
     OnCompleteFrameCallback* complete_frame_callback,
     rtc::scoped_refptr<FrameDecryptorInterface> frame_decryptor,
     rtc::scoped_refptr<FrameTransformerInterface> frame_transformer,
@@ -245,7 +244,7 @@
       keyframe_request_method_(config_.rtp.keyframe_method),
       // TODO(bugs.webrtc.org/10336): Let `rtcp_feedback_buffer_` communicate
       // directly with `rtp_rtcp_`.
-      rtcp_feedback_buffer_(this, nack_sender, this),
+      rtcp_feedback_buffer_(this, this, this),
       nack_module_(MaybeConstructNackModule(current_queue,
                                             nack_periodic_processor,
                                             config_,
@@ -689,6 +688,12 @@
   }
 }
 
+void RtpVideoStreamReceiver2::SendNack(
+    const std::vector<uint16_t>& sequence_numbers,
+    bool /*buffering_allowed*/) {
+  rtp_rtcp_->SendNack(sequence_numbers);
+}
+
 void RtpVideoStreamReceiver2::SendLossNotification(
     uint16_t last_decoded_seq_num,
     uint16_t last_received_seq_num,
@@ -707,12 +712,6 @@
   return config_.rtp.nack.rtp_history_ms > 0;
 }
 
-void RtpVideoStreamReceiver2::RequestPacketRetransmit(
-    const std::vector<uint16_t>& sequence_numbers) {
-  RTC_DCHECK_RUN_ON(&worker_task_checker_);
-  rtp_rtcp_->SendNack(sequence_numbers);
-}
-
 bool RtpVideoStreamReceiver2::IsDecryptable() const {
   RTC_DCHECK_RUN_ON(&worker_task_checker_);
   return frames_decryptable_;
diff --git a/video/rtp_video_stream_receiver2.h b/video/rtp_video_stream_receiver2.h
index d0db53c..b47e239 100644
--- a/video/rtp_video_stream_receiver2.h
+++ b/video/rtp_video_stream_receiver2.h
@@ -64,6 +64,7 @@
                                 public RecoveredPacketReceiver,
                                 public RtpPacketSinkInterface,
                                 public KeyFrameRequestSender,
+                                public NackSender,
                                 public OnDecryptedFrameCallback,
                                 public OnDecryptionStatusChangeCallback,
                                 public RtpVideoFrameReceiver {
@@ -90,7 +91,6 @@
       RtcpPacketTypeCounterObserver* rtcp_packet_type_counter_observer,
       RtcpCnameCallback* rtcp_cname_callback,
       NackPeriodicProcessor* nack_periodic_processor,
-      NackSender* nack_sender,
       // The KeyFrameRequestSender is optional; if not provided, key frame
       // requests are sent via the internal RtpRtcp module.
       OnCompleteFrameCallback* complete_frame_callback,
@@ -138,6 +138,10 @@
   // Send an RTCP keyframe request.
   void RequestKeyFrame() override;
 
+  // Implements NackSender.
+  void SendNack(const std::vector<uint16_t>& sequence_numbers,
+                bool buffering_allowed) override;
+
   // Implements LossNotificationSender.
   void SendLossNotification(uint16_t last_decoded_seq_num,
                             uint16_t last_received_seq_num,
@@ -152,12 +156,6 @@
   // Decryption not SRTP.
   bool IsDecryptable() const;
 
-  // Request packet retransmits via NACK. Called via
-  // VideoReceiveStream2::SendNack, which gets called when
-  // RtpVideoStreamReceiver2::RtcpFeedbackBuffer's SendNack and
-  // SendBufferedRtcpFeedback methods (see `rtcp_feedback_buffer_` below).
-  void RequestPacketRetransmit(const std::vector<uint16_t>& sequence_numbers);
-
   // Implements OnDecryptedFrameCallback.
   void OnDecryptedFrame(std::unique_ptr<RtpFrameObject> frame) override;
 
diff --git a/video/rtp_video_stream_receiver2_unittest.cc b/video/rtp_video_stream_receiver2_unittest.cc
index 21803ba..4eb0406 100644
--- a/video/rtp_video_stream_receiver2_unittest.cc
+++ b/video/rtp_video_stream_receiver2_unittest.cc
@@ -160,8 +160,8 @@
     rtp_video_stream_receiver_ = std::make_unique<RtpVideoStreamReceiver2>(
         TaskQueueBase::Current(), Clock::GetRealTimeClock(), &mock_transport_,
         nullptr, nullptr, &config_, rtp_receive_statistics_.get(), nullptr,
-        nullptr, &nack_periodic_processor_, &mock_nack_sender_,
-        &mock_on_complete_frame_callback_, nullptr, nullptr, field_trials_);
+        nullptr, &nack_periodic_processor_, &mock_on_complete_frame_callback_,
+        nullptr, nullptr, field_trials_);
     rtp_video_stream_receiver_->AddReceiveCodec(kPayloadType,
                                                 kVideoCodecGeneric, {},
                                                 /*raw_payload=*/false);
@@ -235,7 +235,6 @@
   webrtc::test::ScopedKeyValueConfig field_trials_;
   VideoReceiveStreamInterface::Config config_;
   NackPeriodicProcessor nack_periodic_processor_;
-  MockNackSender mock_nack_sender_;
   test::RtcpPacketParser rtcp_packet_parser_;
   MockTransport mock_transport_;
   MockOnCompleteFrameCallback mock_on_complete_frame_callback_;
@@ -1143,9 +1142,8 @@
   auto receiver = std::make_unique<RtpVideoStreamReceiver2>(
       TaskQueueBase::Current(), Clock::GetRealTimeClock(), &mock_transport_,
       nullptr, nullptr, &config_, rtp_receive_statistics_.get(), nullptr,
-      nullptr, &nack_periodic_processor_, &mock_nack_sender_,
-      &mock_on_complete_frame_callback_, nullptr, mock_frame_transformer,
-      field_trials_);
+      nullptr, &nack_periodic_processor_, &mock_on_complete_frame_callback_,
+      nullptr, mock_frame_transformer, field_trials_);
   receiver->AddReceiveCodec(kPayloadType, kVideoCodecGeneric, {},
                             /*raw_payload=*/false);
 
diff --git a/video/video_receive_stream2.cc b/video/video_receive_stream2.cc
index d3e8821..f0dc245 100644
--- a/video/video_receive_stream2.cc
+++ b/video/video_receive_stream2.cc
@@ -234,7 +234,6 @@
                                  &stats_proxy_,
                                  &stats_proxy_,
                                  nack_periodic_processor,
-                                 this,  // NackSender
                                  this,  // OnCompleteFrameCallback
                                  std::move(config_.frame_decryptor),
                                  std::move(config_.frame_transformer),
@@ -653,14 +652,6 @@
       std::move(frame_transformer));
 }
 
-void VideoReceiveStream2::SendNack(
-    const std::vector<uint16_t>& sequence_numbers,
-    bool buffering_allowed) {
-  RTC_DCHECK_RUN_ON(&worker_sequence_checker_);
-  RTC_DCHECK(buffering_allowed);
-  rtp_video_stream_receiver_.RequestPacketRetransmit(sequence_numbers);
-}
-
 void VideoReceiveStream2::RequestKeyFrame(Timestamp now) {
   // Running on worker_sequence_checker_.
   // Called from RtpVideoStreamReceiver (rtp_video_stream_receiver_ is
diff --git a/video/video_receive_stream2.h b/video/video_receive_stream2.h
index 06978b4..e327302 100644
--- a/video/video_receive_stream2.h
+++ b/video/video_receive_stream2.h
@@ -84,7 +84,6 @@
 class VideoReceiveStream2
     : public webrtc::VideoReceiveStreamInterface,
       public rtc::VideoSinkInterface<VideoFrame>,
-      public NackSender,
       public RtpVideoStreamReceiver2::OnCompleteFrameCallback,
       public Syncable,
       public CallStatsObserver,
@@ -163,12 +162,6 @@
   // Implements rtc::VideoSinkInterface<VideoFrame>.
   void OnFrame(const VideoFrame& video_frame) override;
 
-  // Implements NackSender.
-  // For this particular override of the interface,
-  // only (buffering_allowed == true) is acceptable.
-  void SendNack(const std::vector<uint16_t>& sequence_numbers,
-                bool buffering_allowed) override;
-
   // Implements RtpVideoStreamReceiver2::OnCompleteFrameCallback.
   void OnCompleteFrame(std::unique_ptr<EncodedFrame> frame) override;