Add virtual method rtcp::RtcpPacket::SetSenderSsrc

This will allow RtcpPackets to be sent in a more generic way where the
PacketRouter does not have to know about the type.

App::SetSsrc is replaced with SetSenderSsrc

Bug: webrtc:10742
Change-Id: I9fa18d408250f15818dc6898093d9b116603facb
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/156166
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Commit-Queue: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29420}
diff --git a/modules/pacing/packet_router.cc b/modules/pacing/packet_router.cc
index 31b1ef1..229cdb3 100644
--- a/modules/pacing/packet_router.cc
+++ b/modules/pacing/packet_router.cc
@@ -296,7 +296,7 @@
     rtcp::RemoteEstimate* packet) {
   rtc::CritScope cs(&modules_crit_);
   for (auto* rtcp_sender : rtcp_feedback_senders_) {
-    packet->SetSsrc(rtcp_sender->SSRC());
+    packet->SetSenderSsrc(rtcp_sender->SSRC());
     if (rtcp_sender->SendNetworkStateEstimatePacket(*packet)) {
       break;
     }
diff --git a/modules/rtp_rtcp/source/rtcp_packet.h b/modules/rtp_rtcp/source/rtcp_packet.h
index d41afcb..f60d804 100644
--- a/modules/rtp_rtcp/source/rtcp_packet.h
+++ b/modules/rtp_rtcp/source/rtcp_packet.h
@@ -76,6 +76,8 @@
                       size_t max_length,
                       PacketReadyCallback callback) const = 0;
 
+  virtual void SetSenderSsrc(uint32_t ssrc) = 0;
+
  protected:
   // Size of the rtcp common header.
   static constexpr size_t kHeaderLength = 4;
diff --git a/modules/rtp_rtcp/source/rtcp_packet/app.h b/modules/rtp_rtcp/source/rtcp_packet/app.h
index 990ff36..f780a4e 100644
--- a/modules/rtp_rtcp/source/rtcp_packet/app.h
+++ b/modules/rtp_rtcp/source/rtcp_packet/app.h
@@ -31,7 +31,7 @@
   // Parse assumes header is already parsed and validated.
   bool Parse(const CommonHeader& packet);
 
-  void SetSsrc(uint32_t ssrc) { ssrc_ = ssrc; }
+  void SetSenderSsrc(uint32_t ssrc) override { ssrc_ = ssrc; }
   void SetSubType(uint8_t subtype);
   void SetName(uint32_t name) { name_ = name; }
   void SetData(const uint8_t* data, size_t data_length);
diff --git a/modules/rtp_rtcp/source/rtcp_packet/app_unittest.cc b/modules/rtp_rtcp/source/rtcp_packet/app_unittest.cc
index 59356e5..a67ddf3 100644
--- a/modules/rtp_rtcp/source/rtcp_packet/app_unittest.cc
+++ b/modules/rtp_rtcp/source/rtcp_packet/app_unittest.cc
@@ -53,7 +53,7 @@
 
 TEST(RtcpPacketAppTest, CreateWithoutData) {
   App app;
-  app.SetSsrc(kSenderSsrc);
+  app.SetSenderSsrc(kSenderSsrc);
   app.SetSubType(kSubtype);
   app.SetName(kName);
 
@@ -75,7 +75,7 @@
 
 TEST(RtcpPacketAppTest, CreateWithData) {
   App app;
-  app.SetSsrc(kSenderSsrc);
+  app.SetSenderSsrc(kSenderSsrc);
   app.SetSubType(kSubtype);
   app.SetName(kName);
   app.SetData(kData, sizeof(kData));
diff --git a/modules/rtp_rtcp/source/rtcp_packet/bye.h b/modules/rtp_rtcp/source/rtcp_packet/bye.h
index 0a6555e..7566d1f 100644
--- a/modules/rtp_rtcp/source/rtcp_packet/bye.h
+++ b/modules/rtp_rtcp/source/rtcp_packet/bye.h
@@ -31,7 +31,7 @@
   // Parse assumes header is already parsed and validated.
   bool Parse(const CommonHeader& packet);
 
-  void SetSenderSsrc(uint32_t ssrc) { sender_ssrc_ = ssrc; }
+  void SetSenderSsrc(uint32_t ssrc) override { sender_ssrc_ = ssrc; }
   bool SetCsrcs(std::vector<uint32_t> csrcs);
   void SetReason(std::string reason);
 
diff --git a/modules/rtp_rtcp/source/rtcp_packet/compound_packet.h b/modules/rtp_rtcp/source/rtcp_packet/compound_packet.h
index f521c7f..68b721e3 100644
--- a/modules/rtp_rtcp/source/rtcp_packet/compound_packet.h
+++ b/modules/rtp_rtcp/source/rtcp_packet/compound_packet.h
@@ -35,6 +35,8 @@
               size_t max_length,
               PacketReadyCallback callback) const override;
 
+  void SetSenderSsrc(uint32_t /*ssrc*/) override { RTC_NOTREACHED(); }
+
  protected:
   std::vector<RtcpPacket*> appended_packets_;
 
diff --git a/modules/rtp_rtcp/source/rtcp_packet/extended_jitter_report.h b/modules/rtp_rtcp/source/rtcp_packet/extended_jitter_report.h
index c28b9d9..aaf4498 100644
--- a/modules/rtp_rtcp/source/rtcp_packet/extended_jitter_report.h
+++ b/modules/rtp_rtcp/source/rtcp_packet/extended_jitter_report.h
@@ -43,6 +43,8 @@
               size_t max_length,
               PacketReadyCallback callback) const override;
 
+  void SetSenderSsrc(uint32_t /*ssrc*/) override {}
+
  private:
   static constexpr size_t kJitterSizeBytes = 4;
 
diff --git a/modules/rtp_rtcp/source/rtcp_packet/extended_reports.h b/modules/rtp_rtcp/source/rtcp_packet/extended_reports.h
index 4ae652c..5111118 100644
--- a/modules/rtp_rtcp/source/rtcp_packet/extended_reports.h
+++ b/modules/rtp_rtcp/source/rtcp_packet/extended_reports.h
@@ -36,7 +36,7 @@
   // Parse assumes header is already parsed and validated.
   bool Parse(const CommonHeader& packet);
 
-  void SetSenderSsrc(uint32_t ssrc) { sender_ssrc_ = ssrc; }
+  void SetSenderSsrc(uint32_t ssrc) override { sender_ssrc_ = ssrc; }
 
   void SetRrtr(const Rrtr& rrtr);
   bool AddDlrrItem(const ReceiveTimeInfo& time_info);
diff --git a/modules/rtp_rtcp/source/rtcp_packet/psfb.h b/modules/rtp_rtcp/source/rtcp_packet/psfb.h
index dd870e3..1139151 100644
--- a/modules/rtp_rtcp/source/rtcp_packet/psfb.h
+++ b/modules/rtp_rtcp/source/rtcp_packet/psfb.h
@@ -30,7 +30,7 @@
   Psfb() : sender_ssrc_(0), media_ssrc_(0) {}
   ~Psfb() override {}
 
-  void SetSenderSsrc(uint32_t ssrc) { sender_ssrc_ = ssrc; }
+  void SetSenderSsrc(uint32_t ssrc) override { sender_ssrc_ = ssrc; }
   void SetMediaSsrc(uint32_t ssrc) { media_ssrc_ = ssrc; }
 
   uint32_t sender_ssrc() const { return sender_ssrc_; }
diff --git a/modules/rtp_rtcp/source/rtcp_packet/receiver_report.h b/modules/rtp_rtcp/source/rtcp_packet/receiver_report.h
index bd66b8d..b35c377 100644
--- a/modules/rtp_rtcp/source/rtcp_packet/receiver_report.h
+++ b/modules/rtp_rtcp/source/rtcp_packet/receiver_report.h
@@ -35,7 +35,7 @@
   // Parse assumes header is already parsed and validated.
   bool Parse(const CommonHeader& packet);
 
-  void SetSenderSsrc(uint32_t ssrc) { sender_ssrc_ = ssrc; }
+  void SetSenderSsrc(uint32_t ssrc) override { sender_ssrc_ = ssrc; }
   bool AddReportBlock(const ReportBlock& block);
   bool SetReportBlocks(std::vector<ReportBlock> blocks);
 
diff --git a/modules/rtp_rtcp/source/rtcp_packet/remote_estimate.cc b/modules/rtp_rtcp/source/rtcp_packet/remote_estimate.cc
index 82b0b2f..3f63bd5 100644
--- a/modules/rtp_rtcp/source/rtcp_packet/remote_estimate.cc
+++ b/modules/rtp_rtcp/source/rtcp_packet/remote_estimate.cc
@@ -128,7 +128,7 @@
 RemoteEstimate::RemoteEstimate() : serializer_(GetRemoteEstimateSerializer()) {
   SetSubType(kSubType);
   SetName(kName);
-  SetSsrc(0);
+  SetSenderSsrc(0);
 }
 
 RemoteEstimate::RemoteEstimate(App&& app)
diff --git a/modules/rtp_rtcp/source/rtcp_packet/rtpfb.h b/modules/rtp_rtcp/source/rtcp_packet/rtpfb.h
index 2197773..1c00381 100644
--- a/modules/rtp_rtcp/source/rtcp_packet/rtpfb.h
+++ b/modules/rtp_rtcp/source/rtcp_packet/rtpfb.h
@@ -29,7 +29,7 @@
   Rtpfb() : sender_ssrc_(0), media_ssrc_(0) {}
   ~Rtpfb() override {}
 
-  void SetSenderSsrc(uint32_t ssrc) { sender_ssrc_ = ssrc; }
+  void SetSenderSsrc(uint32_t ssrc) override { sender_ssrc_ = ssrc; }
   void SetMediaSsrc(uint32_t ssrc) { media_ssrc_ = ssrc; }
 
   uint32_t sender_ssrc() const { return sender_ssrc_; }
diff --git a/modules/rtp_rtcp/source/rtcp_packet/sdes.h b/modules/rtp_rtcp/source/rtcp_packet/sdes.h
index 70e9385..c9cf8d7 100644
--- a/modules/rtp_rtcp/source/rtcp_packet/sdes.h
+++ b/modules/rtp_rtcp/source/rtcp_packet/sdes.h
@@ -46,6 +46,8 @@
               size_t max_length,
               PacketReadyCallback callback) const override;
 
+  void SetSenderSsrc(uint32_t /*ssrc*/) override {}
+
  private:
   std::vector<Chunk> chunks_;
   size_t block_length_;
diff --git a/modules/rtp_rtcp/source/rtcp_packet/sender_report.h b/modules/rtp_rtcp/source/rtcp_packet/sender_report.h
index f1ee525..9362e8d 100644
--- a/modules/rtp_rtcp/source/rtcp_packet/sender_report.h
+++ b/modules/rtp_rtcp/source/rtcp_packet/sender_report.h
@@ -36,7 +36,7 @@
   // Parse assumes header is already parsed and validated.
   bool Parse(const CommonHeader& packet);
 
-  void SetSenderSsrc(uint32_t ssrc) { sender_ssrc_ = ssrc; }
+  void SetSenderSsrc(uint32_t ssrc) override { sender_ssrc_ = ssrc; }
   void SetNtp(NtpTime ntp) { ntp_ = ntp; }
   void SetRtpTimestamp(uint32_t rtp_timestamp) {
     rtp_timestamp_ = rtp_timestamp;
diff --git a/modules/rtp_rtcp/source/rtcp_sender.cc b/modules/rtp_rtcp/source/rtcp_sender.cc
index ba46ece..1c6d154 100644
--- a/modules/rtp_rtcp/source/rtcp_sender.cc
+++ b/modules/rtp_rtcp/source/rtcp_sender.cc
@@ -595,7 +595,7 @@
 
 std::unique_ptr<rtcp::RtcpPacket> RTCPSender::BuildAPP(const RtcpContext& ctx) {
   rtcp::App* app = new rtcp::App();
-  app->SetSsrc(ssrc_);
+  app->SetSenderSsrc(ssrc_);
   app->SetSubType(app_sub_type_);
   app->SetName(app_name_);
   app->SetData(app_data_.get(), app_length_);