diff --git a/modules/rtp_rtcp/include/rtp_rtcp.h b/modules/rtp_rtcp/include/rtp_rtcp.h
index f1d3b2c..a207a11 100644
--- a/modules/rtp_rtcp/include/rtp_rtcp.h
+++ b/modules/rtp_rtcp/include/rtp_rtcp.h
@@ -331,12 +331,6 @@
   // Returns -1 on failure else 0.
   virtual int32_t SendRTCP(RTCPPacketType rtcp_packet_type) = 0;
 
-  // Forces a send of a RTCP packet with more than one packet type.
-  // periodic SR and RR are triggered via the process function
-  // Returns -1 on failure else 0.
-  virtual int32_t SendCompoundRTCP(
-      const std::set<RTCPPacketType>& rtcp_packet_types) = 0;
-
   // Returns statistics of the amount of data sent.
   // Returns -1 on failure else 0.
   virtual int32_t DataCountersRTP(size_t* bytes_sent,
diff --git a/modules/rtp_rtcp/source/rtp_rtcp_impl.cc b/modules/rtp_rtcp/source/rtp_rtcp_impl.cc
index cd7f845..2e8e662 100644
--- a/modules/rtp_rtcp/source/rtp_rtcp_impl.cc
+++ b/modules/rtp_rtcp/source/rtp_rtcp_impl.cc
@@ -511,13 +511,6 @@
   return rtcp_sender_.SendRTCP(GetFeedbackState(), packet_type);
 }
 
-// Force a send of an RTCP packet.
-// Normal SR and RR are triggered via the process function.
-int32_t ModuleRtpRtcpImpl::SendCompoundRTCP(
-    const std::set<RTCPPacketType>& packet_types) {
-  return rtcp_sender_.SendCompoundRTCP(GetFeedbackState(), packet_types);
-}
-
 int32_t ModuleRtpRtcpImpl::SetRTCPApplicationSpecificData(
     const uint8_t sub_type,
     const uint32_t name,
diff --git a/modules/rtp_rtcp/source/rtp_rtcp_impl.h b/modules/rtp_rtcp/source/rtp_rtcp_impl.h
index a4afb40..3fb1126 100644
--- a/modules/rtp_rtcp/source/rtp_rtcp_impl.h
+++ b/modules/rtp_rtcp/source/rtp_rtcp_impl.h
@@ -184,9 +184,6 @@
   // Normal SR and RR are triggered via the process function.
   int32_t SendRTCP(RTCPPacketType rtcpPacketType) override;
 
-  int32_t SendCompoundRTCP(
-      const std::set<RTCPPacketType>& rtcpPacketTypes) override;
-
   // Statistics of the amount of data sent and received.
   int32_t DataCountersRTP(size_t* bytes_sent,
                           uint32_t* packets_sent) const override;
diff --git a/modules/rtp_rtcp/source/rtp_rtcp_impl_unittest.cc b/modules/rtp_rtcp/source/rtp_rtcp_impl_unittest.cc
index b9419d1..28712c5 100644
--- a/modules/rtp_rtcp/source/rtp_rtcp_impl_unittest.cc
+++ b/modules/rtp_rtcp/source/rtp_rtcp_impl_unittest.cc
@@ -386,27 +386,6 @@
   EXPECT_GT(sender_.RtcpReceived().first_packet_time_ms, -1);
 }
 
-TEST_F(RtpRtcpImplTest, RtcpPacketTypeCounter_FirAndPli) {
-  EXPECT_EQ(0U, sender_.RtcpReceived().fir_packets);
-  EXPECT_EQ(0U, receiver_.RtcpSent().fir_packets);
-  // Receive module sends a FIR.
-  EXPECT_EQ(0, receiver_.impl_->SendRTCP(kRtcpFir));
-  EXPECT_EQ(1U, receiver_.RtcpSent().fir_packets);
-  // Send module receives the FIR.
-  EXPECT_EQ(1U, sender_.RtcpReceived().fir_packets);
-
-  // Receive module sends a FIR and PLI.
-  std::set<RTCPPacketType> packet_types;
-  packet_types.insert(kRtcpFir);
-  packet_types.insert(kRtcpPli);
-  EXPECT_EQ(0, receiver_.impl_->SendCompoundRTCP(packet_types));
-  EXPECT_EQ(2U, receiver_.RtcpSent().fir_packets);
-  EXPECT_EQ(1U, receiver_.RtcpSent().pli_packets);
-  // Send module receives the FIR and PLI.
-  EXPECT_EQ(2U, sender_.RtcpReceived().fir_packets);
-  EXPECT_EQ(1U, sender_.RtcpReceived().pli_packets);
-}
-
 TEST_F(RtpRtcpImplTest, AddStreamDataCounters) {
   StreamDataCounters rtp;
   const int64_t kStartTimeMs = 1;
