Style fixes in rtcp_packet/

1. To make the files conform to chromium-style guidelines, and stop the compiler from complaing:
1.1. Move constructors out of .h file.
1.2. Move destructors out of .h file.
1.3. Move virtual functions out of .h file.
2. BlockLength() and Create() did not have consistent access modifiers in the various subclasses of RtcpPacket. Change the access level to public throughout.
3. Reorder BlockLength() and Create() where necessary, to reflect the order defined in the parent class (RtcpPacket).

BUG=None

Review-Url: https://codereview.webrtc.org/2937403002
Cr-Commit-Position: refs/heads/master@{#18633}
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/app.cc b/webrtc/modules/rtp_rtcp/source/rtcp_packet/app.cc
index 322bf36..e9d1078 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/app.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/app.cc
@@ -32,6 +32,11 @@
 //    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 //  8 |                   application-dependent data                ...
 //    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+App::App() : sub_type_(0), ssrc_(0), name_(0) {}
+
+App::~App() = default;
+
 bool App::Parse(const CommonHeader& packet) {
   RTC_DCHECK_EQ(packet.type(), kPacketType);
   if (packet.payload_size_bytes() < kAppBaseLength) {
@@ -65,6 +70,10 @@
   data_.SetData(data, data_length);
 }
 
+size_t App::BlockLength() const {
+  return kHeaderLength + kAppBaseLength + data_.size();
+}
+
 bool App::Create(uint8_t* packet,
                  size_t* index,
                  size_t max_length,
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/app.h b/webrtc/modules/rtp_rtcp/source/rtcp_packet/app.h
index 42a16c7..1261e84 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/app.h
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/app.h
@@ -21,8 +21,8 @@
 class App : public RtcpPacket {
  public:
   static constexpr uint8_t kPacketType = 204;
-  App() : sub_type_(0), ssrc_(0), name_(0) {}
-  ~App() override {}
+  App();
+  ~App() override;
 
   // Parse assumes header is already parsed and validated.
   bool Parse(const CommonHeader& packet);
@@ -38,7 +38,8 @@
   size_t data_size() const { return data_.size(); }
   const uint8_t* data() const { return data_.data(); }
 
- protected:
+  size_t BlockLength() const override;
+
   bool Create(uint8_t* packet,
               size_t* index,
               size_t max_length,
@@ -47,9 +48,6 @@
  private:
   static constexpr size_t kAppBaseLength = 8;  // Ssrc and Name.
   static constexpr size_t kMaxDataSize = 0xffff * 4 - kAppBaseLength;
-  size_t BlockLength() const override {
-    return kHeaderLength + kAppBaseLength + data_.size();
-  }
 
   uint8_t sub_type_;
   uint32_t ssrc_;
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/bye.cc b/webrtc/modules/rtp_rtcp/source/rtcp_packet/bye.cc
index 494c870..965fde2 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/bye.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/bye.cc
@@ -34,6 +34,8 @@
 //       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 Bye::Bye() : sender_ssrc_(0) {}
 
+Bye::~Bye() = default;
+
 bool Bye::Parse(const CommonHeader& packet) {
   RTC_DCHECK_EQ(packet.type(), kPacketType);
 
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/bye.h b/webrtc/modules/rtp_rtcp/source/rtcp_packet/bye.h
index c3f1cab..e82f01c 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/bye.h
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/bye.h
@@ -26,7 +26,7 @@
   static constexpr uint8_t kPacketType = 203;
 
   Bye();
-  ~Bye() override {}
+  ~Bye() override;
 
   // Parse assumes header is already parsed and validated.
   bool Parse(const CommonHeader& packet);
@@ -39,7 +39,8 @@
   const std::vector<uint32_t>& csrcs() const { return csrcs_; }
   const std::string& reason() const { return reason_; }
 
- protected:
+  size_t BlockLength() const override;
+
   bool Create(uint8_t* packet,
               size_t* index,
               size_t max_length,
@@ -48,8 +49,6 @@
  private:
   static const int kMaxNumberOfCsrcs = 0x1f - 1;  // First item is sender SSRC.
 
-  size_t BlockLength() const override;
-
   uint32_t sender_ssrc_;
   std::vector<uint32_t> csrcs_;
   std::string reason_;
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/compound_packet.cc b/webrtc/modules/rtp_rtcp/source/rtcp_packet/compound_packet.cc
index eead45d..d5bbee6 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/compound_packet.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/compound_packet.cc
@@ -15,6 +15,10 @@
 namespace webrtc {
 namespace rtcp {
 
+CompoundPacket::CompoundPacket() = default;
+
+CompoundPacket::~CompoundPacket() = default;
+
 void CompoundPacket::Append(RtcpPacket* packet) {
   RTC_CHECK(packet);
   appended_packets_.push_back(packet);
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/compound_packet.h b/webrtc/modules/rtp_rtcp/source/rtcp_packet/compound_packet.h
index 06b67c3..5bb23dd 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/compound_packet.h
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/compound_packet.h
@@ -23,8 +23,8 @@
 
 class CompoundPacket : public RtcpPacket {
  public:
-  CompoundPacket() {}
-  ~CompoundPacket() override {}
+  CompoundPacket();
+  ~CompoundPacket() override;
 
   void Append(RtcpPacket* packet);
 
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/dlrr.cc b/webrtc/modules/rtp_rtcp/source/rtcp_packet/dlrr.cc
index 808a4d0..80b44d5 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/dlrr.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/dlrr.cc
@@ -33,6 +33,12 @@
 //  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ block
 //  :                               ...                             :   2
 
+Dlrr::Dlrr() = default;
+
+Dlrr::Dlrr(const Dlrr& other) = default;
+
+Dlrr::~Dlrr() = default;
+
 bool Dlrr::Parse(const uint8_t* buffer, uint16_t block_length_32bits) {
   RTC_DCHECK(buffer[0] == kBlockType);
   // kReserved = buffer[1];
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/dlrr.h b/webrtc/modules/rtp_rtcp/source/rtcp_packet/dlrr.h
index c5f5c23..840ca37 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/dlrr.h
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/dlrr.h
@@ -33,9 +33,9 @@
  public:
   static const uint8_t kBlockType = 5;
 
-  Dlrr() {}
-  Dlrr(const Dlrr& other) = default;
-  ~Dlrr() {}
+  Dlrr();
+  Dlrr(const Dlrr& other);
+  ~Dlrr();
 
   Dlrr& operator=(const Dlrr& other) = default;
 
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/extended_jitter_report.cc b/webrtc/modules/rtp_rtcp/source/rtcp_packet/extended_jitter_report.cc
index c296dbca..f7798dc 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/extended_jitter_report.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/extended_jitter_report.cc
@@ -39,6 +39,10 @@
 //  (inside a compound RTCP packet), and MUST have the same value for RC
 //  (reception report count) as the receiver report.
 
+ExtendedJitterReport::ExtendedJitterReport() = default;
+
+ExtendedJitterReport::~ExtendedJitterReport() = default;
+
 bool ExtendedJitterReport::Parse(const CommonHeader& packet) {
   RTC_DCHECK_EQ(packet.type(), kPacketType);
 
@@ -67,6 +71,10 @@
   return true;
 }
 
+size_t ExtendedJitterReport::BlockLength() const {
+  return kHeaderLength + kJitterSizeBytes * inter_arrival_jitters_.size();
+}
+
 bool ExtendedJitterReport::Create(
     uint8_t* packet,
     size_t* index,
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/extended_jitter_report.h b/webrtc/modules/rtp_rtcp/source/rtcp_packet/extended_jitter_report.h
index 2e56e33..1771e02 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/extended_jitter_report.h
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/extended_jitter_report.h
@@ -24,8 +24,8 @@
   static constexpr uint8_t kPacketType = 195;
   static constexpr size_t kMaxNumberOfJitterValues = 0x1f;
 
-  ExtendedJitterReport() {}
-  ~ExtendedJitterReport() override {}
+  ExtendedJitterReport();
+  ~ExtendedJitterReport() override;
 
   // Parse assumes header is already parsed and validated.
   bool Parse(const CommonHeader& packet);
@@ -36,7 +36,8 @@
     return inter_arrival_jitters_;
   }
 
- protected:
+  size_t BlockLength() const override;
+
   bool Create(uint8_t* packet,
               size_t* index,
               size_t max_length,
@@ -45,10 +46,6 @@
  private:
   static constexpr size_t kJitterSizeBytes = 4;
 
-  size_t BlockLength() const override {
-    return kHeaderLength + kJitterSizeBytes * inter_arrival_jitters_.size();
-  }
-
   std::vector<uint32_t> inter_arrival_jitters_;
 };
 
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/extended_reports.cc b/webrtc/modules/rtp_rtcp/source/rtcp_packet/extended_reports.cc
index 4c02c1a..583083b 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/extended_reports.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/extended_reports.cc
@@ -118,6 +118,11 @@
   target_bitrate_ = rtc::Optional<TargetBitrate>(bitrate);
 }
 
+size_t ExtendedReports::BlockLength() const {
+  return kHeaderLength + kXrBaseLength + RrtrLength() + DlrrLength() +
+         VoipMetricLength() + TargetBitrateLength();
+}
+
 bool ExtendedReports::Create(uint8_t* packet,
                              size_t* index,
                              size_t max_length,
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/extended_reports.h b/webrtc/modules/rtp_rtcp/source/rtcp_packet/extended_reports.h
index 09723ef..cb34f37 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/extended_reports.h
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/extended_reports.h
@@ -52,7 +52,8 @@
     return target_bitrate_;
   }
 
- protected:
+  size_t BlockLength() const override;
+
   bool Create(uint8_t* packet,
               size_t* index,
               size_t max_length,
@@ -61,11 +62,6 @@
  private:
   static constexpr size_t kXrBaseLength = 4;
 
-  size_t BlockLength() const override {
-    return kHeaderLength + kXrBaseLength + RrtrLength() + DlrrLength() +
-           VoipMetricLength() + TargetBitrateLength();
-  }
-
   size_t RrtrLength() const { return rrtr_block_ ? Rrtr::kLength : 0; }
   size_t DlrrLength() const { return dlrr_block_.BlockLength(); }
   size_t VoipMetricLength() const {
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/fir.cc b/webrtc/modules/rtp_rtcp/source/rtcp_packet/fir.cc
index 7f62e18..069a13c 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/fir.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/fir.cc
@@ -43,6 +43,11 @@
 //  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 //  | Seq nr.       |    Reserved = 0                               |
 //  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+Fir::Fir() = default;
+
+Fir::~Fir() = default;
+
 bool Fir::Parse(const CommonHeader& packet) {
   RTC_DCHECK_EQ(packet.type(), kPacketType);
   RTC_DCHECK_EQ(packet.fmt(), kFeedbackMessageType);
@@ -72,6 +77,10 @@
   return true;
 }
 
+size_t Fir::BlockLength() const {
+  return kHeaderLength + kCommonFeedbackLength + kFciLength * items_.size();
+}
+
 bool Fir::Create(uint8_t* packet,
                  size_t* index,
                  size_t max_length,
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/fir.h b/webrtc/modules/rtp_rtcp/source/rtcp_packet/fir.h
index 59f3b61..8d772d8 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/fir.h
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/fir.h
@@ -30,8 +30,8 @@
     uint8_t seq_nr;
   };
 
-  Fir() {}
-  ~Fir() override {}
+  Fir();
+  ~Fir() override;
 
   // Parse assumes header is already parsed and validated.
   bool Parse(const CommonHeader& packet);
@@ -41,7 +41,8 @@
   }
   const std::vector<Request>& requests() const { return items_; }
 
- protected:
+  size_t BlockLength() const override;
+
   bool Create(uint8_t* packet,
               size_t* index,
               size_t max_length,
@@ -49,9 +50,7 @@
 
  private:
   static constexpr size_t kFciLength = 8;
-  size_t BlockLength() const override {
-    return kHeaderLength + kCommonFeedbackLength + kFciLength * items_.size();
-  }
+
   // SSRC of media source is not used in FIR packet. Shadow base functions.
   void SetMediaSsrc(uint32_t ssrc);
   uint32_t media_ssrc() const;
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/nack.cc b/webrtc/modules/rtp_rtcp/source/rtcp_packet/nack.cc
index 956b16f..a51764f 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/nack.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/nack.cc
@@ -75,6 +75,11 @@
   return true;
 }
 
+size_t Nack::BlockLength() const {
+  return kHeaderLength + kCommonFeedbackLength +
+         packed_.size() * kNackItemLength;
+}
+
 bool Nack::Create(uint8_t* packet,
                   size_t* index,
                   size_t max_length,
@@ -116,11 +121,6 @@
   return true;
 }
 
-size_t Nack::BlockLength() const {
-  return kHeaderLength + kCommonFeedbackLength +
-         packed_.size() * kNackItemLength;
-}
-
 void Nack::SetPacketIds(const uint16_t* nack_list, size_t length) {
   RTC_DCHECK(nack_list);
   RTC_DCHECK(packet_ids_.empty());
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/nack.h b/webrtc/modules/rtp_rtcp/source/rtcp_packet/nack.h
index 65a6593..2b5acec 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/nack.h
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/nack.h
@@ -32,14 +32,13 @@
   void SetPacketIds(const uint16_t* nack_list, size_t length);
   const std::vector<uint16_t>& packet_ids() const { return packet_ids_; }
 
- protected:
+  size_t BlockLength() const override;
+
   bool Create(uint8_t* packet,
               size_t* index,
               size_t max_length,
               RtcpPacket::PacketReadyCallback* callback) const override;
 
-  size_t BlockLength() const override;
-
  private:
   static constexpr size_t kNackItemLength = 4;
   struct PackedNack {
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/pli.cc b/webrtc/modules/rtp_rtcp/source/rtcp_packet/pli.cc
index 7838fcc..ade6c2a 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/pli.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/pli.cc
@@ -49,6 +49,10 @@
   return true;
 }
 
+size_t Pli::BlockLength() const {
+  return kHeaderLength + kCommonFeedbackLength;
+}
+
 bool Pli::Create(uint8_t* packet,
                  size_t* index,
                  size_t max_length,
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/pli.h b/webrtc/modules/rtp_rtcp/source/rtcp_packet/pli.h
index 1cfde4f..c3682bd 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/pli.h
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/pli.h
@@ -26,16 +26,12 @@
 
   bool Parse(const CommonHeader& packet);
 
- protected:
+  size_t BlockLength() const override;
+
   bool Create(uint8_t* packet,
               size_t* index,
               size_t max_length,
               RtcpPacket::PacketReadyCallback* callback) const override;
-
- private:
-  size_t BlockLength() const override {
-    return kHeaderLength + kCommonFeedbackLength;
-  }
 };
 
 }  // namespace rtcp
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/rapid_resync_request.cc b/webrtc/modules/rtp_rtcp/source/rtcp_packet/rapid_resync_request.cc
index 12a4444..1ec6826 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/rapid_resync_request.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/rapid_resync_request.cc
@@ -44,6 +44,10 @@
   return true;
 }
 
+size_t RapidResyncRequest::BlockLength() const {
+  return kHeaderLength + kCommonFeedbackLength;
+}
+
 bool RapidResyncRequest::Create(
     uint8_t* packet,
     size_t* index,
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/rapid_resync_request.h b/webrtc/modules/rtp_rtcp/source/rtcp_packet/rapid_resync_request.h
index eb45e14..ba101a3 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/rapid_resync_request.h
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/rapid_resync_request.h
@@ -29,16 +29,12 @@
   // Parse assumes header is already parsed and validated.
   bool Parse(const CommonHeader& header);
 
- protected:
+  size_t BlockLength() const override;
+
   bool Create(uint8_t* packet,
               size_t* index,
               size_t max_length,
               RtcpPacket::PacketReadyCallback* callback) const override;
-
- private:
-  size_t BlockLength() const override {
-    return kHeaderLength + kCommonFeedbackLength;
-  }
 };
 }  // namespace rtcp
 }  // namespace webrtc
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/receiver_report.cc b/webrtc/modules/rtp_rtcp/source/rtcp_packet/receiver_report.cc
index 93da4dc..03a9dbd 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/receiver_report.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/receiver_report.cc
@@ -29,6 +29,11 @@
 //  +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
 //  |                         report block(s)                       |
 //  |                            ....                               |
+
+ReceiverReport::ReceiverReport() : sender_ssrc_(0) {}
+
+ReceiverReport::~ReceiverReport() = default;
+
 bool ReceiverReport::Parse(const CommonHeader& packet) {
   RTC_DCHECK_EQ(packet.type(), kPacketType);
 
@@ -55,6 +60,11 @@
   return true;
 }
 
+size_t ReceiverReport::BlockLength() const {
+  return kHeaderLength + kRrBaseLength +
+         report_blocks_.size() * ReportBlock::kLength;
+}
+
 bool ReceiverReport::Create(uint8_t* packet,
                             size_t* index,
                             size_t max_length,
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/receiver_report.h b/webrtc/modules/rtp_rtcp/source/rtcp_packet/receiver_report.h
index 09aa0fe..2b8b190 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/receiver_report.h
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/receiver_report.h
@@ -24,8 +24,8 @@
 class ReceiverReport : public RtcpPacket {
  public:
   static constexpr uint8_t kPacketType = 201;
-  ReceiverReport() : sender_ssrc_(0) {}
-  ~ReceiverReport() override {}
+  ReceiverReport();
+  ~ReceiverReport() override;
 
   // Parse assumes header is already parsed and validated.
   bool Parse(const CommonHeader& packet);
@@ -38,7 +38,8 @@
     return report_blocks_;
   }
 
- protected:
+  size_t BlockLength() const override;
+
   bool Create(uint8_t* packet,
               size_t* index,
               size_t max_length,
@@ -48,11 +49,6 @@
   static const size_t kRrBaseLength = 4;
   static const size_t kMaxNumberOfReportBlocks = 0x1F;
 
-  size_t BlockLength() const override {
-    return kHeaderLength + kRrBaseLength +
-           report_blocks_.size() * ReportBlock::kLength;
-  }
-
   uint32_t sender_ssrc_;
   std::vector<ReportBlock> report_blocks_;
 };
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/remb.cc b/webrtc/modules/rtp_rtcp/source/rtcp_packet/remb.cc
index ec7b51a..c6f8972 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/remb.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/remb.cc
@@ -38,6 +38,11 @@
 // 16 |   SSRC feedback                                               |
 //    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 //    :  ...                                                          :
+
+Remb::Remb() : bitrate_bps_(0) {}
+
+Remb::~Remb() = default;
+
 bool Remb::Parse(const CommonHeader& packet) {
   RTC_DCHECK(packet.type() == kPacketType);
   RTC_DCHECK_EQ(packet.fmt(), kFeedbackMessageType);
@@ -92,6 +97,10 @@
   return true;
 }
 
+size_t Remb::BlockLength() const {
+  return kHeaderLength + kCommonFeedbackLength + (2 + ssrcs_.size()) * 4;
+}
+
 bool Remb::Create(uint8_t* packet,
                   size_t* index,
                   size_t max_length,
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/remb.h b/webrtc/modules/rtp_rtcp/source/rtcp_packet/remb.h
index fdcce10..42c2a96 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/remb.h
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/remb.h
@@ -26,8 +26,8 @@
   static constexpr uint8_t kFeedbackMessageType = 15;
   static constexpr size_t kMaxNumberOfSsrcs = 0xff;
 
-  Remb() : bitrate_bps_(0) {}
-  ~Remb() override {}
+  Remb();
+  ~Remb() override;
 
   // Parse assumes header is already parsed and validated.
   bool Parse(const CommonHeader& packet);
@@ -38,16 +38,13 @@
   uint64_t bitrate_bps() const { return bitrate_bps_; }
   const std::vector<uint32_t>& ssrcs() const { return ssrcs_; }
 
- protected:
+  size_t BlockLength() const override;
+
   bool Create(uint8_t* packet,
               size_t* index,
               size_t max_length,
               RtcpPacket::PacketReadyCallback* callback) const override;
 
-  size_t BlockLength() const override {
-    return kHeaderLength + kCommonFeedbackLength + (2 + ssrcs_.size()) * 4;
-  }
-
  private:
   static constexpr uint32_t kUniqueIdentifier = 0x52454D42;  // 'R' 'E' 'M' 'B'.
 
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/sdes.cc b/webrtc/modules/rtp_rtcp/source/rtcp_packet/sdes.cc
index 9b06b25..2e395d7 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/sdes.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/sdes.cc
@@ -155,6 +155,10 @@
   return true;
 }
 
+size_t Sdes::BlockLength() const {
+  return block_length_;
+}
+
 bool Sdes::Create(uint8_t* packet,
                   size_t* index,
                   size_t max_length,
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/sdes.h b/webrtc/modules/rtp_rtcp/source/rtcp_packet/sdes.h
index 46382ac..34885dc 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/sdes.h
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/sdes.h
@@ -40,9 +40,8 @@
 
   const std::vector<Chunk>& chunks() const { return chunks_; }
 
-  size_t BlockLength() const override { return block_length_; }
+  size_t BlockLength() const override;
 
- protected:
   bool Create(uint8_t* packet,
               size_t* index,
               size_t max_length,
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/sender_report.cc b/webrtc/modules/rtp_rtcp/source/rtcp_packet/sender_report.cc
index 312b3f9..3cadd43 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/sender_report.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/sender_report.cc
@@ -43,6 +43,8 @@
       sender_packet_count_(0),
       sender_octet_count_(0) {}
 
+SenderReport::~SenderReport() = default;
+
 bool SenderReport::Parse(const CommonHeader& packet) {
   RTC_DCHECK_EQ(packet.type(), kPacketType);
 
@@ -74,6 +76,11 @@
   return true;
 }
 
+size_t SenderReport::BlockLength() const {
+  return kHeaderLength + kSenderBaseLength +
+         report_blocks_.size() * ReportBlock::kLength;
+}
+
 bool SenderReport::Create(uint8_t* packet,
                           size_t* index,
                           size_t max_length,
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/sender_report.h b/webrtc/modules/rtp_rtcp/source/rtcp_packet/sender_report.h
index c62e505..0e39eb5 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/sender_report.h
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/sender_report.h
@@ -26,7 +26,7 @@
   static constexpr uint8_t kPacketType = 200;
 
   SenderReport();
-  ~SenderReport() override {}
+  ~SenderReport() override;
 
   // Parse assumes header is already parsed and validated.
   bool Parse(const CommonHeader& packet);
@@ -55,7 +55,8 @@
     return report_blocks_;
   }
 
- protected:
+  size_t BlockLength() const override;
+
   bool Create(uint8_t* packet,
               size_t* index,
               size_t max_length,
@@ -65,11 +66,6 @@
   static const size_t kMaxNumberOfReportBlocks = 0x1f;
   const size_t kSenderBaseLength = 24;
 
-  size_t BlockLength() const override {
-    return kHeaderLength + kSenderBaseLength +
-           report_blocks_.size() * ReportBlock::kLength;
-  }
-
   uint32_t sender_ssrc_;
   NtpTime ntp_;
   uint32_t rtp_timestamp_;
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/target_bitrate.cc b/webrtc/modules/rtp_rtcp/source/rtcp_packet/target_bitrate.cc
index e3a813a..9132642 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/target_bitrate.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/target_bitrate.cc
@@ -65,21 +65,6 @@
 TargetBitrate::TargetBitrate() {}
 TargetBitrate::~TargetBitrate() {}
 
-void TargetBitrate::Create(uint8_t* buffer) const {
-  buffer[0] = kBlockType;
-  buffer[1] = 0;  // Reserved.
-  const size_t block_length_words = (BlockLength() / 4) - 1;
-  ByteWriter<uint16_t>::WriteBigEndian(&buffer[2], block_length_words);
-
-  size_t index = kTargetBitrateHeaderSizeBytes;
-  for (const BitrateItem& item : bitrates_) {
-    buffer[index] = (item.spatial_layer << 4) | item.temporal_layer;
-    ByteWriter<uint32_t, 3>::WriteBigEndian(&buffer[index + 1],
-                                            item.target_bitrate_kbps);
-    index += kBitrateItemSizeBytes;
-  }
-}
-
 bool TargetBitrate::Parse(const uint8_t* block, uint16_t block_length) {
   if (block_length < 1) {
     LOG(LS_WARNING)
@@ -130,5 +115,20 @@
          bitrates_.size() * kBitrateItemSizeBytes;
 }
 
+void TargetBitrate::Create(uint8_t* buffer) const {
+  buffer[0] = kBlockType;
+  buffer[1] = 0;  // Reserved.
+  const size_t block_length_words = (BlockLength() / 4) - 1;
+  ByteWriter<uint16_t>::WriteBigEndian(&buffer[2], block_length_words);
+
+  size_t index = kTargetBitrateHeaderSizeBytes;
+  for (const BitrateItem& item : bitrates_) {
+    buffer[index] = (item.spatial_layer << 4) | item.temporal_layer;
+    ByteWriter<uint32_t, 3>::WriteBigEndian(&buffer[index + 1],
+                                            item.target_bitrate_kbps);
+    index += kBitrateItemSizeBytes;
+  }
+}
+
 }  // namespace rtcp
 }  // namespace webrtc
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/target_bitrate.h b/webrtc/modules/rtp_rtcp/source/rtcp_packet/target_bitrate.h
index 013c222f..d3f672a 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/target_bitrate.h
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/target_bitrate.h
@@ -47,10 +47,10 @@
 
   bool Parse(const uint8_t* block, uint16_t block_length);
 
-  void Create(uint8_t* buffer) const;
-
   size_t BlockLength() const;
 
+  void Create(uint8_t* buffer) const;
+
  private:
   std::vector<BitrateItem> bitrates_;
 };
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/tmmbn.cc b/webrtc/modules/rtp_rtcp/source/rtcp_packet/tmmbn.cc
index 702afd8..d9c3227 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/tmmbn.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/tmmbn.cc
@@ -42,6 +42,11 @@
 //   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 //   | MxTBR Exp |  MxTBR Mantissa                 |Measured Overhead|
 //   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+Tmmbn::Tmmbn() = default;
+
+Tmmbn::~Tmmbn() = default;
+
 bool Tmmbn::Parse(const CommonHeader& packet) {
   RTC_DCHECK_EQ(packet.type(), kPacketType);
   RTC_DCHECK_EQ(packet.fmt(), kFeedbackMessageType);
@@ -74,6 +79,11 @@
   items_.push_back(item);
 }
 
+size_t Tmmbn::BlockLength() const {
+  return kHeaderLength + kCommonFeedbackLength +
+         TmmbItem::kLength * items_.size();
+}
+
 bool Tmmbn::Create(uint8_t* packet,
                    size_t* index,
                    size_t max_length,
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/tmmbn.h b/webrtc/modules/rtp_rtcp/source/rtcp_packet/tmmbn.h
index a02aad6..8b32366 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/tmmbn.h
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/tmmbn.h
@@ -27,8 +27,8 @@
  public:
   static constexpr uint8_t kFeedbackMessageType = 4;
 
-  Tmmbn() {}
-  ~Tmmbn() override {}
+  Tmmbn();
+  ~Tmmbn() override;
 
   // Parse assumes header is already parsed and validated.
   bool Parse(const CommonHeader& packet);
@@ -37,18 +37,14 @@
 
   const std::vector<TmmbItem>& items() const { return items_; }
 
- protected:
+  size_t BlockLength() const override;
+
   bool Create(uint8_t* packet,
               size_t* index,
               size_t max_length,
               RtcpPacket::PacketReadyCallback* callback) const override;
 
  private:
-  size_t BlockLength() const override {
-    return kHeaderLength + kCommonFeedbackLength +
-           TmmbItem::kLength * items_.size();
-  }
-
   // Media ssrc is unused, shadow base class setter and getter.
   void SetMediaSsrc(uint32_t ssrc);
   uint32_t media_ssrc() const;
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/tmmbr.cc b/webrtc/modules/rtp_rtcp/source/rtcp_packet/tmmbr.cc
index 0ba1311..fd0719e 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/tmmbr.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/tmmbr.cc
@@ -43,6 +43,11 @@
 //  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 //  | MxTBR Exp |  MxTBR Mantissa                 |Measured Overhead|
 //  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+Tmmbr::Tmmbr() = default;
+
+Tmmbr::~Tmmbr() = default;
+
 bool Tmmbr::Parse(const CommonHeader& packet) {
   RTC_DCHECK_EQ(packet.type(), kPacketType);
   RTC_DCHECK_EQ(packet.fmt(), kFeedbackMessageType);
@@ -75,6 +80,11 @@
   items_.push_back(item);
 }
 
+size_t Tmmbr::BlockLength() const {
+  return kHeaderLength + kCommonFeedbackLength +
+         TmmbItem::kLength * items_.size();
+}
+
 bool Tmmbr::Create(uint8_t* packet,
                    size_t* index,
                    size_t max_length,
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/tmmbr.h b/webrtc/modules/rtp_rtcp/source/rtcp_packet/tmmbr.h
index 2915c9d..4d1bf11 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/tmmbr.h
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/tmmbr.h
@@ -27,8 +27,8 @@
  public:
   static constexpr uint8_t kFeedbackMessageType = 3;
 
-  Tmmbr() {}
-  ~Tmmbr() override {}
+  Tmmbr();
+  ~Tmmbr() override;
 
   // Parse assumes header is already parsed and validated.
   bool Parse(const CommonHeader& packet);
@@ -37,18 +37,14 @@
 
   const std::vector<TmmbItem>& requests() const { return items_; }
 
- protected:
+  size_t BlockLength() const override;
+
   bool Create(uint8_t* packet,
               size_t* index,
               size_t max_length,
               RtcpPacket::PacketReadyCallback* callback) const override;
 
  private:
-  size_t BlockLength() const override {
-    return kHeaderLength + kCommonFeedbackLength +
-           TmmbItem::kLength * items_.size();
-  }
-
   // Media ssrc is unused, shadow base class setter.
   void SetMediaSsrc(uint32_t ssrc);
 
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback.cc b/webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback.cc
index ec7c616..796577c 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback.cc
@@ -545,6 +545,11 @@
   return true;
 }
 
+size_t TransportFeedback::BlockLength() const {
+  // Round size_bytes_ up to multiple of 32bits.
+  return (size_bytes_ + 3) & (~static_cast<size_t>(3));
+}
+
 // Serialize packet.
 bool TransportFeedback::Create(uint8_t* packet,
                                size_t* position,
@@ -602,11 +607,6 @@
   return true;
 }
 
-size_t TransportFeedback::BlockLength() const {
-  // Round size_bytes_ up to multiple of 32bits.
-  return (size_bytes_ + 3) & (~static_cast<size_t>(3));
-}
-
 void TransportFeedback::Clear() {
   num_seq_no_ = 0;
   last_timestamp_us_ = GetBaseTimeUs();
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback.h b/webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback.h
index 25f1111..35fe90b 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback.h
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback.h
@@ -69,14 +69,13 @@
   // This function is for tests.
   bool IsConsistent() const;
 
- protected:
+  size_t BlockLength() const override;
+
   bool Create(uint8_t* packet,
               size_t* position,
               size_t max_length,
               PacketReadyCallback* callback) const override;
 
-  size_t BlockLength() const override;
-
  private:
   // Size in bytes of a delta time in rtcp packet.
   // Valid values are 0 (packet wasn't received), 1 or 2.