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}
This commit is contained in:
Per Kjellander
2019-10-09 13:30:36 +02:00
committed by Commit Bot
parent 6f41f8e2ad
commit 955f8fd047
15 changed files with 20 additions and 12 deletions

View File

@ -296,7 +296,7 @@ void PacketRouter::SendNetworkStateEstimatePacket(
rtcp::RemoteEstimate* packet) { rtcp::RemoteEstimate* packet) {
rtc::CritScope cs(&modules_crit_); rtc::CritScope cs(&modules_crit_);
for (auto* rtcp_sender : rtcp_feedback_senders_) { for (auto* rtcp_sender : rtcp_feedback_senders_) {
packet->SetSsrc(rtcp_sender->SSRC()); packet->SetSenderSsrc(rtcp_sender->SSRC());
if (rtcp_sender->SendNetworkStateEstimatePacket(*packet)) { if (rtcp_sender->SendNetworkStateEstimatePacket(*packet)) {
break; break;
} }

View File

@ -76,6 +76,8 @@ class RtcpPacket {
size_t max_length, size_t max_length,
PacketReadyCallback callback) const = 0; PacketReadyCallback callback) const = 0;
virtual void SetSenderSsrc(uint32_t ssrc) = 0;
protected: protected:
// Size of the rtcp common header. // Size of the rtcp common header.
static constexpr size_t kHeaderLength = 4; static constexpr size_t kHeaderLength = 4;

View File

@ -31,7 +31,7 @@ class App : public RtcpPacket {
// Parse assumes header is already parsed and validated. // Parse assumes header is already parsed and validated.
bool Parse(const CommonHeader& packet); 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 SetSubType(uint8_t subtype);
void SetName(uint32_t name) { name_ = name; } void SetName(uint32_t name) { name_ = name; }
void SetData(const uint8_t* data, size_t data_length); void SetData(const uint8_t* data, size_t data_length);

View File

@ -53,7 +53,7 @@ constexpr uint8_t kPacketWithUnalignedPayload[] = {
TEST(RtcpPacketAppTest, CreateWithoutData) { TEST(RtcpPacketAppTest, CreateWithoutData) {
App app; App app;
app.SetSsrc(kSenderSsrc); app.SetSenderSsrc(kSenderSsrc);
app.SetSubType(kSubtype); app.SetSubType(kSubtype);
app.SetName(kName); app.SetName(kName);
@ -75,7 +75,7 @@ TEST(RtcpPacketAppTest, ParseWithoutData) {
TEST(RtcpPacketAppTest, CreateWithData) { TEST(RtcpPacketAppTest, CreateWithData) {
App app; App app;
app.SetSsrc(kSenderSsrc); app.SetSenderSsrc(kSenderSsrc);
app.SetSubType(kSubtype); app.SetSubType(kSubtype);
app.SetName(kName); app.SetName(kName);
app.SetData(kData, sizeof(kData)); app.SetData(kData, sizeof(kData));

View File

@ -31,7 +31,7 @@ class Bye : public RtcpPacket {
// Parse assumes header is already parsed and validated. // Parse assumes header is already parsed and validated.
bool Parse(const CommonHeader& packet); 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); bool SetCsrcs(std::vector<uint32_t> csrcs);
void SetReason(std::string reason); void SetReason(std::string reason);

View File

@ -35,6 +35,8 @@ class CompoundPacket : public RtcpPacket {
size_t max_length, size_t max_length,
PacketReadyCallback callback) const override; PacketReadyCallback callback) const override;
void SetSenderSsrc(uint32_t /*ssrc*/) override { RTC_NOTREACHED(); }
protected: protected:
std::vector<RtcpPacket*> appended_packets_; std::vector<RtcpPacket*> appended_packets_;

View File

@ -43,6 +43,8 @@ class ExtendedJitterReport : public RtcpPacket {
size_t max_length, size_t max_length,
PacketReadyCallback callback) const override; PacketReadyCallback callback) const override;
void SetSenderSsrc(uint32_t /*ssrc*/) override {}
private: private:
static constexpr size_t kJitterSizeBytes = 4; static constexpr size_t kJitterSizeBytes = 4;

View File

@ -36,7 +36,7 @@ class ExtendedReports : public RtcpPacket {
// Parse assumes header is already parsed and validated. // Parse assumes header is already parsed and validated.
bool Parse(const CommonHeader& packet); 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); void SetRrtr(const Rrtr& rrtr);
bool AddDlrrItem(const ReceiveTimeInfo& time_info); bool AddDlrrItem(const ReceiveTimeInfo& time_info);

View File

@ -30,7 +30,7 @@ class Psfb : public RtcpPacket {
Psfb() : sender_ssrc_(0), media_ssrc_(0) {} Psfb() : sender_ssrc_(0), media_ssrc_(0) {}
~Psfb() override {} ~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; } void SetMediaSsrc(uint32_t ssrc) { media_ssrc_ = ssrc; }
uint32_t sender_ssrc() const { return sender_ssrc_; } uint32_t sender_ssrc() const { return sender_ssrc_; }

View File

@ -35,7 +35,7 @@ class ReceiverReport : public RtcpPacket {
// Parse assumes header is already parsed and validated. // Parse assumes header is already parsed and validated.
bool Parse(const CommonHeader& packet); 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 AddReportBlock(const ReportBlock& block);
bool SetReportBlocks(std::vector<ReportBlock> blocks); bool SetReportBlocks(std::vector<ReportBlock> blocks);

View File

@ -128,7 +128,7 @@ const RemoteEstimateSerializer* GetRemoteEstimateSerializer() {
RemoteEstimate::RemoteEstimate() : serializer_(GetRemoteEstimateSerializer()) { RemoteEstimate::RemoteEstimate() : serializer_(GetRemoteEstimateSerializer()) {
SetSubType(kSubType); SetSubType(kSubType);
SetName(kName); SetName(kName);
SetSsrc(0); SetSenderSsrc(0);
} }
RemoteEstimate::RemoteEstimate(App&& app) RemoteEstimate::RemoteEstimate(App&& app)

View File

@ -29,7 +29,7 @@ class Rtpfb : public RtcpPacket {
Rtpfb() : sender_ssrc_(0), media_ssrc_(0) {} Rtpfb() : sender_ssrc_(0), media_ssrc_(0) {}
~Rtpfb() override {} ~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; } void SetMediaSsrc(uint32_t ssrc) { media_ssrc_ = ssrc; }
uint32_t sender_ssrc() const { return sender_ssrc_; } uint32_t sender_ssrc() const { return sender_ssrc_; }

View File

@ -46,6 +46,8 @@ class Sdes : public RtcpPacket {
size_t max_length, size_t max_length,
PacketReadyCallback callback) const override; PacketReadyCallback callback) const override;
void SetSenderSsrc(uint32_t /*ssrc*/) override {}
private: private:
std::vector<Chunk> chunks_; std::vector<Chunk> chunks_;
size_t block_length_; size_t block_length_;

View File

@ -36,7 +36,7 @@ class SenderReport : public RtcpPacket {
// Parse assumes header is already parsed and validated. // Parse assumes header is already parsed and validated.
bool Parse(const CommonHeader& packet); 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 SetNtp(NtpTime ntp) { ntp_ = ntp; }
void SetRtpTimestamp(uint32_t rtp_timestamp) { void SetRtpTimestamp(uint32_t rtp_timestamp) {
rtp_timestamp_ = rtp_timestamp; rtp_timestamp_ = rtp_timestamp;

View File

@ -595,7 +595,7 @@ std::unique_ptr<rtcp::RtcpPacket> RTCPSender::BuildTMMBN(
std::unique_ptr<rtcp::RtcpPacket> RTCPSender::BuildAPP(const RtcpContext& ctx) { std::unique_ptr<rtcp::RtcpPacket> RTCPSender::BuildAPP(const RtcpContext& ctx) {
rtcp::App* app = new rtcp::App(); rtcp::App* app = new rtcp::App();
app->SetSsrc(ssrc_); app->SetSenderSsrc(ssrc_);
app->SetSubType(app_sub_type_); app->SetSubType(app_sub_type_);
app->SetName(app_name_); app->SetName(app_name_);
app->SetData(app_data_.get(), app_length_); app->SetData(app_data_.get(), app_length_);