From 955f8fd0477ea2d4137eff032184e02de8508043 Mon Sep 17 00:00:00 2001 From: Per Kjellander Date: Wed, 9 Oct 2019 13:30:36 +0200 Subject: [PATCH] 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 Reviewed-by: Sebastian Jansson Commit-Queue: Per Kjellander Cr-Commit-Position: refs/heads/master@{#29420} --- modules/pacing/packet_router.cc | 2 +- modules/rtp_rtcp/source/rtcp_packet.h | 2 ++ modules/rtp_rtcp/source/rtcp_packet/app.h | 2 +- modules/rtp_rtcp/source/rtcp_packet/app_unittest.cc | 4 ++-- modules/rtp_rtcp/source/rtcp_packet/bye.h | 2 +- modules/rtp_rtcp/source/rtcp_packet/compound_packet.h | 2 ++ modules/rtp_rtcp/source/rtcp_packet/extended_jitter_report.h | 2 ++ modules/rtp_rtcp/source/rtcp_packet/extended_reports.h | 2 +- modules/rtp_rtcp/source/rtcp_packet/psfb.h | 2 +- modules/rtp_rtcp/source/rtcp_packet/receiver_report.h | 2 +- modules/rtp_rtcp/source/rtcp_packet/remote_estimate.cc | 2 +- modules/rtp_rtcp/source/rtcp_packet/rtpfb.h | 2 +- modules/rtp_rtcp/source/rtcp_packet/sdes.h | 2 ++ modules/rtp_rtcp/source/rtcp_packet/sender_report.h | 2 +- modules/rtp_rtcp/source/rtcp_sender.cc | 2 +- 15 files changed, 20 insertions(+), 12 deletions(-) diff --git a/modules/pacing/packet_router.cc b/modules/pacing/packet_router.cc index 31b1ef1f3e..229cdb36b6 100644 --- a/modules/pacing/packet_router.cc +++ b/modules/pacing/packet_router.cc @@ -296,7 +296,7 @@ void PacketRouter::SendNetworkStateEstimatePacket( 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 d41afcb77c..f60d804bdf 100644 --- a/modules/rtp_rtcp/source/rtcp_packet.h +++ b/modules/rtp_rtcp/source/rtcp_packet.h @@ -76,6 +76,8 @@ class RtcpPacket { 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 990ff3645c..f780a4eabf 100644 --- a/modules/rtp_rtcp/source/rtcp_packet/app.h +++ b/modules/rtp_rtcp/source/rtcp_packet/app.h @@ -31,7 +31,7 @@ class App : public RtcpPacket { // 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 59356e58aa..a67ddf3730 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 @@ constexpr uint8_t kPacketWithUnalignedPayload[] = { TEST(RtcpPacketAppTest, CreateWithoutData) { App app; - app.SetSsrc(kSenderSsrc); + app.SetSenderSsrc(kSenderSsrc); app.SetSubType(kSubtype); app.SetName(kName); @@ -75,7 +75,7 @@ TEST(RtcpPacketAppTest, ParseWithoutData) { 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 0a6555e15f..7566d1fbe3 100644 --- a/modules/rtp_rtcp/source/rtcp_packet/bye.h +++ b/modules/rtp_rtcp/source/rtcp_packet/bye.h @@ -31,7 +31,7 @@ class Bye : public RtcpPacket { // 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 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 f521c7f921..68b721e3cd 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 @@ class CompoundPacket : public RtcpPacket { size_t max_length, PacketReadyCallback callback) const override; + void SetSenderSsrc(uint32_t /*ssrc*/) override { RTC_NOTREACHED(); } + protected: std::vector 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 c28b9d9dbd..aaf4498a37 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 @@ class ExtendedJitterReport : public RtcpPacket { 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 4ae652c08d..5111118cd6 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 @@ class ExtendedReports : public RtcpPacket { // 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 dd870e37f2..113915102d 100644 --- a/modules/rtp_rtcp/source/rtcp_packet/psfb.h +++ b/modules/rtp_rtcp/source/rtcp_packet/psfb.h @@ -30,7 +30,7 @@ class Psfb : public RtcpPacket { 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 bd66b8d0de..b35c37771d 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 @@ class ReceiverReport : public RtcpPacket { // 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 blocks); diff --git a/modules/rtp_rtcp/source/rtcp_packet/remote_estimate.cc b/modules/rtp_rtcp/source/rtcp_packet/remote_estimate.cc index 82b0b2f9d1..3f63bd5888 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 @@ const RemoteEstimateSerializer* GetRemoteEstimateSerializer() { 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 21977736b6..1c00381011 100644 --- a/modules/rtp_rtcp/source/rtcp_packet/rtpfb.h +++ b/modules/rtp_rtcp/source/rtcp_packet/rtpfb.h @@ -29,7 +29,7 @@ class Rtpfb : public RtcpPacket { 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 70e9385b9b..c9cf8d7d41 100644 --- a/modules/rtp_rtcp/source/rtcp_packet/sdes.h +++ b/modules/rtp_rtcp/source/rtcp_packet/sdes.h @@ -46,6 +46,8 @@ class Sdes : public RtcpPacket { size_t max_length, PacketReadyCallback callback) const override; + void SetSenderSsrc(uint32_t /*ssrc*/) override {} + private: std::vector 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 f1ee5250da..9362e8d27b 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 @@ class SenderReport : public RtcpPacket { // 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 ba46ecef58..1c6d15490e 100644 --- a/modules/rtp_rtcp/source/rtcp_sender.cc +++ b/modules/rtp_rtcp/source/rtcp_sender.cc @@ -595,7 +595,7 @@ std::unique_ptr RTCPSender::BuildTMMBN( std::unique_ptr 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_);