Add rtcp observers for media receiver to RtcpTransceiverImpl
Bug: webrtc:8239
Change-Id: I7b6735f2efb87e303d1b8076c965a751db4af250
Reviewed-on: https://webrtc-review.googlesource.com/31980
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21240}
diff --git a/modules/rtp_rtcp/source/rtcp_transceiver_impl.h b/modules/rtp_rtcp/source/rtcp_transceiver_impl.h
index cfd5de7..c6bb90b 100644
--- a/modules/rtp_rtcp/source/rtcp_transceiver_impl.h
+++ b/modules/rtp_rtcp/source/rtcp_transceiver_impl.h
@@ -19,8 +19,10 @@
#include "api/array_view.h"
#include "api/optional.h"
#include "modules/rtp_rtcp/source/rtcp_packet/common_header.h"
+#include "modules/rtp_rtcp/source/rtcp_packet/dlrr.h"
#include "modules/rtp_rtcp/source/rtcp_packet/remb.h"
#include "modules/rtp_rtcp/source/rtcp_packet/report_block.h"
+#include "modules/rtp_rtcp/source/rtcp_packet/target_bitrate.h"
#include "modules/rtp_rtcp/source/rtcp_transceiver_config.h"
#include "rtc_base/constructormagic.h"
#include "rtc_base/weak_ptr.h"
@@ -36,6 +38,11 @@
explicit RtcpTransceiverImpl(const RtcpTransceiverConfig& config);
~RtcpTransceiverImpl();
+ void AddMediaReceiverObserver(uint32_t remote_ssrc,
+ MediaReceiverRtcpObserver* observer);
+ void RemoveMediaReceiverObserver(uint32_t remote_ssrc,
+ MediaReceiverRtcpObserver* observer);
+
void ReceivePacket(rtc::ArrayView<const uint8_t> packet, int64_t now_us);
void SendCompoundPacket();
@@ -54,10 +61,16 @@
void HandleReceivedPacket(const rtcp::CommonHeader& rtcp_packet_header,
int64_t now_us);
+ // Individual rtcp packet handlers.
+ void HandleBye(const rtcp::CommonHeader& rtcp_packet_header);
void HandleSenderReport(const rtcp::CommonHeader& rtcp_packet_header,
int64_t now_us);
void HandleExtendedReports(const rtcp::CommonHeader& rtcp_packet_header,
int64_t now_us);
+ // Extended Reports blocks handlers.
+ void HandleDlrr(const rtcp::Dlrr& dlrr, int64_t now_us);
+ void HandleTargetBitrate(const rtcp::TargetBitrate& target_bitrate,
+ uint32_t remote_ssrc);
void ReschedulePeriodicCompoundPackets();
void SchedulePeriodicCompoundPackets(int64_t delay_ms);
@@ -73,6 +86,8 @@
const RtcpTransceiverConfig config_;
rtc::Optional<rtcp::Remb> remb_;
+ // TODO(danilchap): Remove entries from remote_senders_ that are no longer
+ // needed.
std::map<uint32_t, RemoteSenderState> remote_senders_;
rtc::WeakPtrFactory<RtcpTransceiverImpl> ptr_factory_;