Revert "Use RtpSenderEgress directly instead of via RTPSender"

This reverts commit b533010bc66a0628c8efa4d6c3dd60b8336f2736.

Reason for revert: Breaks downstream tests.

Original change's description:
> Use RtpSenderEgress directly instead of via RTPSender
> 
> Bug: webrtc:11036
> Change-Id: Ida4e8bc705ae43ceb1b131114707b30d10ba8642
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/158521
> Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
> Commit-Queue: Erik Språng <sprang@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#29626}

TBR=ilnik@webrtc.org,sprang@webrtc.org

Change-Id: Ib3354f6907d21462a8ad0c37eb8f6e94c48af217
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:11036
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/158526
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29627}
diff --git a/modules/rtp_rtcp/source/rtp_rtcp_impl.cc b/modules/rtp_rtcp/source/rtp_rtcp_impl.cc
index c8c0587..f490439 100644
--- a/modules/rtp_rtcp/source/rtp_rtcp_impl.cc
+++ b/modules/rtp_rtcp/source/rtp_rtcp_impl.cc
@@ -38,16 +38,6 @@
 const int64_t kDefaultExpectedRetransmissionTimeMs = 125;
 }  // namespace
 
-ModuleRtpRtcpImpl::RtpSenderContext::RtpSenderContext(
-    const RtpRtcp::Configuration& config)
-    : packet_history_(config.clock),
-      packet_sender_(config, &packet_history_),
-      non_paced_sender_(&packet_sender_),
-      packet_generator_(
-          config,
-          &packet_history_,
-          config.paced_sender ? config.paced_sender : &non_paced_sender_) {}
-
 RtpRtcp::Configuration::Configuration() = default;
 RtpRtcp::Configuration::Configuration(Configuration&& rhs) = default;
 
@@ -72,10 +62,9 @@
       rtt_stats_(configuration.rtt_stats),
       rtt_ms_(0) {
   if (!configuration.receiver_only) {
-    rtp_sender_ = std::make_unique<RtpSenderContext>(configuration);
+    rtp_sender_.reset(new RTPSender(configuration));
     // Make sure rtcp sender use same timestamp offset as rtp sender.
-    rtcp_sender_.SetTimestampOffset(
-        rtp_sender_->packet_generator_.TimestampOffset());
+    rtcp_sender_.SetTimestampOffset(rtp_sender_->TimestampOffset());
   }
 
   // Set default packet size limit.
@@ -101,7 +90,7 @@
 
   if (rtp_sender_) {
     if (now >= last_bitrate_process_time_ + kRtpRtcpBitrateProcessTimeMs) {
-      rtp_sender_->packet_sender_.ProcessBitrateAndNotifyObservers();
+      rtp_sender_->ProcessBitrate();
       last_bitrate_process_time_ = now;
       next_process_time_ =
           std::min(next_process_time_, now + kRtpRtcpBitrateProcessTimeMs);
@@ -179,27 +168,25 @@
 }
 
 void ModuleRtpRtcpImpl::SetRtxSendStatus(int mode) {
-  rtp_sender_->packet_generator_.SetRtxStatus(mode);
+  rtp_sender_->SetRtxStatus(mode);
 }
 
 int ModuleRtpRtcpImpl::RtxSendStatus() const {
-  return rtp_sender_ ? rtp_sender_->packet_generator_.RtxStatus() : kRtxOff;
+  return rtp_sender_ ? rtp_sender_->RtxStatus() : kRtxOff;
 }
 
 void ModuleRtpRtcpImpl::SetRtxSendPayloadType(int payload_type,
                                               int associated_payload_type) {
-  rtp_sender_->packet_generator_.SetRtxPayloadType(payload_type,
-                                                   associated_payload_type);
+  rtp_sender_->SetRtxPayloadType(payload_type, associated_payload_type);
 }
 
 absl::optional<uint32_t> ModuleRtpRtcpImpl::RtxSsrc() const {
-  return rtp_sender_ ? rtp_sender_->packet_generator_.RtxSsrc() : absl::nullopt;
+  return rtp_sender_ ? rtp_sender_->RtxSsrc() : absl::nullopt;
 }
 
 absl::optional<uint32_t> ModuleRtpRtcpImpl::FlexfecSsrc() const {
-  if (rtp_sender_) {
-    return rtp_sender_->packet_generator_.FlexfecSsrc();
-  }
+  if (rtp_sender_)
+    return rtp_sender_->FlexfecSsrc();
   return absl::nullopt;
 }
 
@@ -218,54 +205,50 @@
 }
 
 uint32_t ModuleRtpRtcpImpl::StartTimestamp() const {
-  return rtp_sender_->packet_generator_.TimestampOffset();
+  return rtp_sender_->TimestampOffset();
 }
 
 // Configure start timestamp, default is a random number.
 void ModuleRtpRtcpImpl::SetStartTimestamp(const uint32_t timestamp) {
   rtcp_sender_.SetTimestampOffset(timestamp);
-  rtp_sender_->packet_generator_.SetTimestampOffset(timestamp);
+  rtp_sender_->SetTimestampOffset(timestamp);
 }
 
 uint16_t ModuleRtpRtcpImpl::SequenceNumber() const {
-  return rtp_sender_->packet_generator_.SequenceNumber();
+  return rtp_sender_->SequenceNumber();
 }
 
 // Set SequenceNumber, default is a random number.
 void ModuleRtpRtcpImpl::SetSequenceNumber(const uint16_t seq_num) {
-  rtp_sender_->packet_generator_.SetSequenceNumber(seq_num);
+  rtp_sender_->SetSequenceNumber(seq_num);
 }
 
 void ModuleRtpRtcpImpl::SetRtpState(const RtpState& rtp_state) {
-  rtp_sender_->packet_generator_.SetRtpState(rtp_state);
-  rtp_sender_->packet_sender_.SetMediaHasBeenSent(
-      rtp_state.media_has_been_sent);
+  rtp_sender_->SetRtpState(rtp_state);
   rtcp_sender_.SetTimestampOffset(rtp_state.start_timestamp);
 }
 
 void ModuleRtpRtcpImpl::SetRtxState(const RtpState& rtp_state) {
-  rtp_sender_->packet_generator_.SetRtxRtpState(rtp_state);
+  rtp_sender_->SetRtxRtpState(rtp_state);
 }
 
 RtpState ModuleRtpRtcpImpl::GetRtpState() const {
-  RtpState state = rtp_sender_->packet_generator_.GetRtpState();
-  state.media_has_been_sent = rtp_sender_->packet_sender_.MediaHasBeenSent();
-  return state;
+  return rtp_sender_->GetRtpState();
 }
 
 RtpState ModuleRtpRtcpImpl::GetRtxState() const {
-  return rtp_sender_->packet_generator_.GetRtxRtpState();
+  return rtp_sender_->GetRtxRtpState();
 }
 
 void ModuleRtpRtcpImpl::SetRid(const std::string& rid) {
   if (rtp_sender_) {
-    rtp_sender_->packet_generator_.SetRid(rid);
+    rtp_sender_->SetRid(rid);
   }
 }
 
 void ModuleRtpRtcpImpl::SetMid(const std::string& mid) {
   if (rtp_sender_) {
-    rtp_sender_->packet_generator_.SetMid(mid);
+    rtp_sender_->SetMid(mid);
   }
   // TODO(bugs.webrtc.org/4050): If we end up supporting the MID SDES item for
   // RTCP, this will need to be passed down to the RTCPSender also.
@@ -273,7 +256,7 @@
 
 void ModuleRtpRtcpImpl::SetCsrcs(const std::vector<uint32_t>& csrcs) {
   rtcp_sender_.SetCsrcs(csrcs);
-  rtp_sender_->packet_generator_.SetCsrcs(csrcs);
+  rtp_sender_->SetCsrcs(csrcs);
 }
 
 // TODO(pbos): Handle media and RTX streams separately (separate RTCP
@@ -285,13 +268,12 @@
   if (rtp_sender_) {
     StreamDataCounters rtp_stats;
     StreamDataCounters rtx_stats;
-    rtp_sender_->packet_sender_.GetDataCounters(&rtp_stats, &rtx_stats);
+    rtp_sender_->GetDataCounters(&rtp_stats, &rtx_stats);
     state.packets_sent =
         rtp_stats.transmitted.packets + rtx_stats.transmitted.packets;
     state.media_bytes_sent = rtp_stats.transmitted.payload_bytes +
                              rtx_stats.transmitted.payload_bytes;
-    state.send_bitrate =
-        rtp_sender_->packet_sender_.SendBitrate().bps<uint32_t>();
+    state.send_bitrate = rtp_sender_->BitrateSent();
   }
   state.module = this;
 
@@ -325,20 +307,19 @@
 // updated.
 void ModuleRtpRtcpImpl::SetSendingMediaStatus(const bool sending) {
   if (rtp_sender_) {
-    rtp_sender_->packet_generator_.SetSendingMediaStatus(sending);
+    rtp_sender_->SetSendingMediaStatus(sending);
   } else {
     RTC_DCHECK(!sending);
   }
 }
 
 bool ModuleRtpRtcpImpl::SendingMedia() const {
-  return rtp_sender_ ? rtp_sender_->packet_generator_.SendingMedia() : false;
+  return rtp_sender_ ? rtp_sender_->SendingMedia() : false;
 }
 
 void ModuleRtpRtcpImpl::SetAsPartOfAllocation(bool part_of_allocation) {
   RTC_CHECK(rtp_sender_);
-  rtp_sender_->packet_sender_.ForceIncludeSendPacketsInAllocation(
-      part_of_allocation);
+  rtp_sender_->SetAsPartOfAllocation(part_of_allocation);
 }
 
 bool ModuleRtpRtcpImpl::OnSendingRtpFrame(uint32_t timestamp,
@@ -358,41 +339,30 @@
 
 bool ModuleRtpRtcpImpl::TrySendPacket(RtpPacketToSend* packet,
                                       const PacedPacketInfo& pacing_info) {
-  RTC_DCHECK(rtp_sender_);
-  // TODO(sprang): Consider if we can remove this check.
-  if (!rtp_sender_->packet_generator_.SendingMedia()) {
-    return false;
-  }
-  rtp_sender_->packet_sender_.SendPacket(packet, pacing_info);
-  return true;
+  return rtp_sender_->TrySendPacket(packet, pacing_info);
 }
 
 void ModuleRtpRtcpImpl::OnPacketsAcknowledged(
     rtc::ArrayView<const uint16_t> sequence_numbers) {
   RTC_DCHECK(rtp_sender_);
-  rtp_sender_->packet_history_.CullAcknowledgedPackets(sequence_numbers);
+  rtp_sender_->OnPacketsAcknowledged(sequence_numbers);
 }
 
 bool ModuleRtpRtcpImpl::SupportsPadding() const {
-  RTC_DCHECK(rtp_sender_);
-  return rtp_sender_->packet_generator_.SupportsPadding();
+  return rtp_sender_->SupportsPadding();
 }
 
 bool ModuleRtpRtcpImpl::SupportsRtxPayloadPadding() const {
-  RTC_DCHECK(rtp_sender_);
-  return rtp_sender_->packet_generator_.SupportsRtxPayloadPadding();
+  return rtp_sender_->SupportsRtxPayloadPadding();
 }
 
 std::vector<std::unique_ptr<RtpPacketToSend>>
 ModuleRtpRtcpImpl::GeneratePadding(size_t target_size_bytes) {
-  RTC_DCHECK(rtp_sender_);
-  return rtp_sender_->packet_generator_.GeneratePadding(
-      target_size_bytes, rtp_sender_->packet_sender_.MediaHasBeenSent());
+  return rtp_sender_->GeneratePadding(target_size_bytes);
 }
 
 size_t ModuleRtpRtcpImpl::MaxRtpPacketSize() const {
-  RTC_DCHECK(rtp_sender_);
-  return rtp_sender_->packet_generator_.MaxRtpPacketSize();
+  return rtp_sender_->MaxRtpPacketSize();
 }
 
 void ModuleRtpRtcpImpl::SetMaxRtpPacketSize(size_t rtp_packet_size) {
@@ -402,9 +372,8 @@
       << "rtp packet size too small: " << rtp_packet_size;
 
   rtcp_sender_.SetMaxRtpPacketSize(rtp_packet_size);
-  if (rtp_sender_) {
-    rtp_sender_->packet_generator_.SetMaxRtpPacketSize(rtp_packet_size);
-  }
+  if (rtp_sender_)
+    rtp_sender_->SetMaxRtpPacketSize(rtp_packet_size);
 }
 
 RtcpMode ModuleRtpRtcpImpl::RTCP() const {
@@ -502,7 +471,7 @@
                                            uint32_t* packets_sent) const {
   StreamDataCounters rtp_stats;
   StreamDataCounters rtx_stats;
-  rtp_sender_->packet_sender_.GetDataCounters(&rtp_stats, &rtx_stats);
+  rtp_sender_->GetDataCounters(&rtp_stats, &rtx_stats);
 
   if (bytes_sent) {
     // TODO(http://crbug.com/webrtc/10525): Bytes sent should only include
@@ -524,7 +493,7 @@
 void ModuleRtpRtcpImpl::GetSendStreamDataCounters(
     StreamDataCounters* rtp_counters,
     StreamDataCounters* rtx_counters) const {
-  rtp_sender_->packet_sender_.GetDataCounters(rtp_counters, rtx_counters);
+  rtp_sender_->GetDataCounters(rtp_counters, rtx_counters);
 }
 
 // Received RTCP report.
@@ -549,29 +518,28 @@
 }
 
 void ModuleRtpRtcpImpl::SetExtmapAllowMixed(bool extmap_allow_mixed) {
-  rtp_sender_->packet_generator_.SetExtmapAllowMixed(extmap_allow_mixed);
+  rtp_sender_->SetExtmapAllowMixed(extmap_allow_mixed);
 }
 
 int32_t ModuleRtpRtcpImpl::RegisterSendRtpHeaderExtension(
     const RTPExtensionType type,
     const uint8_t id) {
-  return rtp_sender_->packet_generator_.RegisterRtpHeaderExtension(type, id);
+  return rtp_sender_->RegisterRtpHeaderExtension(type, id);
 }
 
 void ModuleRtpRtcpImpl::RegisterRtpHeaderExtension(absl::string_view uri,
                                                    int id) {
-  bool registered =
-      rtp_sender_->packet_generator_.RegisterRtpHeaderExtension(uri, id);
+  bool registered = rtp_sender_->RegisterRtpHeaderExtension(uri, id);
   RTC_CHECK(registered);
 }
 
 int32_t ModuleRtpRtcpImpl::DeregisterSendRtpHeaderExtension(
     const RTPExtensionType type) {
-  return rtp_sender_->packet_generator_.DeregisterRtpHeaderExtension(type);
+  return rtp_sender_->DeregisterRtpHeaderExtension(type);
 }
 void ModuleRtpRtcpImpl::DeregisterSendRtpHeaderExtension(
     absl::string_view uri) {
-  rtp_sender_->packet_generator_.DeregisterRtpHeaderExtension(uri);
+  rtp_sender_->DeregisterRtpHeaderExtension(uri);
 }
 
 // (TMMBR) Temporary Max Media Bit Rate.
@@ -648,15 +616,11 @@
 // Store the sent packets, needed to answer to Negative acknowledgment requests.
 void ModuleRtpRtcpImpl::SetStorePacketsStatus(const bool enable,
                                               const uint16_t number_to_store) {
-  rtp_sender_->packet_history_.SetStorePacketsStatus(
-      enable ? RtpPacketHistory::StorageMode::kStoreAndCull
-             : RtpPacketHistory::StorageMode::kDisabled,
-      number_to_store);
+  rtp_sender_->SetStorePacketsStatus(enable, number_to_store);
 }
 
 bool ModuleRtpRtcpImpl::StorePackets() const {
-  return rtp_sender_->packet_history_.GetStorageMode() !=
-         RtpPacketHistory::StorageMode::kDisabled;
+  return rtp_sender_->StorePackets();
 }
 
 void ModuleRtpRtcpImpl::RegisterRtcpStatisticsCallback(
@@ -702,12 +666,12 @@
                                     uint32_t* video_rate,
                                     uint32_t* fec_rate,
                                     uint32_t* nack_rate) const {
-  *total_rate = rtp_sender_->packet_sender_.SendBitrate().bps<uint32_t>();
+  *total_rate = rtp_sender_->BitrateSent();
   if (video_rate)
     *video_rate = 0;
   if (fec_rate)
     *fec_rate = 0;
-  *nack_rate = rtp_sender_->packet_sender_.NackOverheadRate().bps<uint32_t>();
+  *nack_rate = rtp_sender_->NackOverheadRate();
 }
 
 void ModuleRtpRtcpImpl::OnRequestSendReport() {
@@ -719,7 +683,7 @@
   if (!rtp_sender_)
     return;
 
-  if (!StorePackets() || nack_sequence_numbers.empty()) {
+  if (!rtp_sender_->StorePackets() || nack_sequence_numbers.empty()) {
     return;
   }
   // Use RTT from RtcpRttStats class if provided.
@@ -727,7 +691,7 @@
   if (rtt == 0) {
     rtcp_receiver_.RTT(rtcp_receiver_.RemoteSSRC(), NULL, &rtt, NULL, NULL);
   }
-  rtp_sender_->packet_generator_.OnReceivedNack(nack_sequence_numbers, rtt);
+  rtp_sender_->OnReceivedNack(nack_sequence_numbers, rtt);
 }
 
 void ModuleRtpRtcpImpl::OnReceivedRtcpReportBlocks(
@@ -735,18 +699,18 @@
   if (ack_observer_) {
     uint32_t ssrc = SSRC();
     absl::optional<uint32_t> rtx_ssrc;
-    if (rtp_sender_->packet_generator_.RtxStatus() != kRtxOff) {
-      rtx_ssrc = rtp_sender_->packet_generator_.RtxSsrc();
+    if (rtp_sender_->RtxStatus() != kRtxOff) {
+      rtx_ssrc = rtp_sender_->RtxSsrc();
     }
 
     for (const RTCPReportBlock& report_block : report_blocks) {
       if (ssrc == report_block.source_ssrc) {
-        rtp_sender_->packet_generator_.OnReceivedAckOnSsrc(
+        rtp_sender_->OnReceivedAckOnSsrc(
             report_block.extended_highest_sequence_number);
         ack_observer_->OnReceivedAck(
             report_block.extended_highest_sequence_number);
       } else if (rtx_ssrc && *rtx_ssrc == report_block.source_ssrc) {
-        rtp_sender_->packet_generator_.OnReceivedAckOnRtxSsrc(
+        rtp_sender_->OnReceivedAckOnRtxSsrc(
             report_block.extended_highest_sequence_number);
       }
     }
@@ -778,9 +742,8 @@
 void ModuleRtpRtcpImpl::set_rtt_ms(int64_t rtt_ms) {
   rtc::CritScope cs(&critical_section_rtt_);
   rtt_ms_ = rtt_ms;
-  if (rtp_sender_) {
-    rtp_sender_->packet_history_.SetRtt(rtt_ms);
-  }
+  if (rtp_sender_)
+    rtp_sender_->SetRtt(rtt_ms);
 }
 
 int64_t ModuleRtpRtcpImpl::rtt_ms() const {
@@ -794,11 +757,11 @@
 }
 
 RTPSender* ModuleRtpRtcpImpl::RtpSender() {
-  return rtp_sender_ ? &rtp_sender_->packet_generator_ : nullptr;
+  return rtp_sender_.get();
 }
 
 const RTPSender* ModuleRtpRtcpImpl::RtpSender() const {
-  return rtp_sender_ ? &rtp_sender_->packet_generator_ : nullptr;
+  return rtp_sender_.get();
 }
 
 }  // namespace webrtc