From 12130bb13577ce1c19e43597e86bc5882c45268c Mon Sep 17 00:00:00 2001 From: Sebastian Jansson Date: Wed, 21 Mar 2018 12:48:43 +0100 Subject: [PATCH] Reporting feedback availability to congestion controller. This CL adds reporting of per packet feedback availability from Call via RtpTransportControllerSend to SendSideCongestionController. This is part of a series of CLs tracking the transport feedback status of the streams known to BitrateAllocator and reporting the status to the congestion controller. Bug: webrtc:8415 Change-Id: I20b3dbb4a027c46476bc2d2bc875374bff05609a Reviewed-on: https://webrtc-review.googlesource.com/63220 Commit-Queue: Sebastian Jansson Reviewed-by: Niels Moller Cr-Commit-Position: refs/heads/master@{#22566} --- call/call.cc | 1 + call/rtp_transport_controller_send.cc | 3 +++ call/rtp_transport_controller_send.h | 1 + call/rtp_transport_controller_send_interface.h | 1 + call/test/mock_rtp_transport_controller_send.h | 1 + 5 files changed, 7 insertions(+) diff --git a/call/call.cc b/call/call.cc index 3cd9864d1a..d19fb4b2c9 100644 --- a/call/call.cc +++ b/call/call.cc @@ -1117,6 +1117,7 @@ void Call::OnAllocationLimitsChanged(uint32_t min_send_bitrate_bps, bool has_packet_feedback) { transport_send_->SetAllocatedSendBitrateLimits( min_send_bitrate_bps, max_padding_bitrate_bps, total_bitrate_bps); + transport_send_->SetPerPacketFeedbackAvailable(has_packet_feedback); rtc::CritScope lock(&bitrate_crit_); min_allocated_send_bitrate_bps_ = min_send_bitrate_bps; configured_max_padding_bitrate_bps_ = max_padding_bitrate_bps; diff --git a/call/rtp_transport_controller_send.cc b/call/rtp_transport_controller_send.cc index a4453205b8..d471ea4b1f 100644 --- a/call/rtp_transport_controller_send.cc +++ b/call/rtp_transport_controller_send.cc @@ -203,6 +203,9 @@ int64_t RtpTransportControllerSend::GetPacerQueuingDelayMs() const { int64_t RtpTransportControllerSend::GetFirstPacketTimeMs() const { return pacer_.FirstSentPacketTimeMs(); } +void RtpTransportControllerSend::SetPerPacketFeedbackAvailable(bool available) { + send_side_cc_->SetPerPacketFeedbackAvailable(available); +} void RtpTransportControllerSend::EnablePeriodicAlrProbing(bool enable) { send_side_cc_->EnablePeriodicAlrProbing(enable); } diff --git a/call/rtp_transport_controller_send.h b/call/rtp_transport_controller_send.h index c9a87eddeb..eff1e1603a 100644 --- a/call/rtp_transport_controller_send.h +++ b/call/rtp_transport_controller_send.h @@ -73,6 +73,7 @@ class RtpTransportControllerSend final RtcpBandwidthObserver* GetBandwidthObserver() override; int64_t GetPacerQueuingDelayMs() const override; int64_t GetFirstPacketTimeMs() const override; + void SetPerPacketFeedbackAvailable(bool available) override; void EnablePeriodicAlrProbing(bool enable) override; void OnSentPacket(const rtc::SentPacket& sent_packet) override; diff --git a/call/rtp_transport_controller_send_interface.h b/call/rtp_transport_controller_send_interface.h index 50f80d5e42..7458b3790c 100644 --- a/call/rtp_transport_controller_send_interface.h +++ b/call/rtp_transport_controller_send_interface.h @@ -101,6 +101,7 @@ class RtpTransportControllerSendInterface { virtual int64_t GetFirstPacketTimeMs() const = 0; virtual void EnablePeriodicAlrProbing(bool enable) = 0; virtual void OnSentPacket(const rtc::SentPacket& sent_packet) = 0; + virtual void SetPerPacketFeedbackAvailable(bool available) = 0; virtual void SetSdpBitrateParameters( const BitrateConstraints& constraints) = 0; diff --git a/call/test/mock_rtp_transport_controller_send.h b/call/test/mock_rtp_transport_controller_send.h index 65aa0680cb..1878f1d09f 100644 --- a/call/test/mock_rtp_transport_controller_send.h +++ b/call/test/mock_rtp_transport_controller_send.h @@ -45,6 +45,7 @@ class MockRtpTransportControllerSend MOCK_METHOD0(GetBandwidthObserver, RtcpBandwidthObserver*()); MOCK_CONST_METHOD0(GetPacerQueuingDelayMs, int64_t()); MOCK_CONST_METHOD0(GetFirstPacketTimeMs, int64_t()); + MOCK_METHOD1(SetPerPacketFeedbackAvailable, void(bool)); MOCK_METHOD1(EnablePeriodicAlrProbing, void(bool)); MOCK_METHOD1(OnSentPacket, void(const rtc::SentPacket&)); MOCK_METHOD1(SetSdpBitrateParameters, void(const BitrateConstraints&));