Replace interfaces for sending RTCP with std::functions in ReceiveSideCongestionController
Logic for throttling how often REMB messages are sent is added to ReceiveSideCongestionController as well as a new method SetMaxDesiredReceiveBitrate. These are based on the logic in PacketRouter. The logic for throttling REMB and setting the max REMB will be removed from PacketRouter in a follow up cl. The purpose is to eventually decouple PacketRouter from sending RTCP messages when RtcpTransceiver is used. Bug: webrtc:12693 Change-Id: I9fb5cbcd14bb17d977e76d329a906fc0a9abc276 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/215685 Reviewed-by: Philip Eliasson <philipel@webrtc.org> Reviewed-by: Christoffer Rodbro <crodbro@webrtc.org> Reviewed-by: Danil Chapovalov <danilchap@webrtc.org> Commit-Queue: Per Kjellander <perkj@webrtc.org> Cr-Commit-Position: refs/heads/master@{#33801}
This commit is contained in:
committed by
Commit Bot
parent
1585587c57
commit
898f091eeb
@ -10,6 +10,7 @@
|
||||
|
||||
#include "modules/congestion_controller/include/receive_side_congestion_controller.h"
|
||||
|
||||
#include "api/units/data_rate.h"
|
||||
#include "modules/pacing/packet_router.h"
|
||||
#include "modules/remote_bitrate_estimator/include/bwe_defines.h"
|
||||
#include "modules/remote_bitrate_estimator/remote_bitrate_estimator_abs_send_time.h"
|
||||
@ -127,9 +128,26 @@ ReceiveSideCongestionController::ReceiveSideCongestionController(
|
||||
Clock* clock,
|
||||
PacketRouter* packet_router,
|
||||
NetworkStateEstimator* network_state_estimator)
|
||||
: remote_bitrate_estimator_(packet_router, clock),
|
||||
: remb_throttler_([](auto...) {}, clock),
|
||||
remote_bitrate_estimator_(packet_router, clock),
|
||||
remote_estimator_proxy_(
|
||||
clock,
|
||||
[packet_router](
|
||||
std::vector<std::unique_ptr<rtcp::RtcpPacket>> packets) {
|
||||
packet_router->SendCombinedRtcpPacket(std::move(packets));
|
||||
},
|
||||
&field_trial_config_,
|
||||
network_state_estimator) {}
|
||||
|
||||
ReceiveSideCongestionController::ReceiveSideCongestionController(
|
||||
Clock* clock,
|
||||
RemoteEstimatorProxy::TransportFeedbackSender feedback_sender,
|
||||
RembThrottler::RembSender remb_sender,
|
||||
NetworkStateEstimator* network_state_estimator)
|
||||
: remb_throttler_(std::move(remb_sender), clock),
|
||||
remote_bitrate_estimator_(&remb_throttler_, clock),
|
||||
remote_estimator_proxy_(clock,
|
||||
packet_router,
|
||||
std::move(feedback_sender),
|
||||
&field_trial_config_,
|
||||
network_state_estimator) {}
|
||||
|
||||
@ -186,4 +204,9 @@ void ReceiveSideCongestionController::Process() {
|
||||
remote_bitrate_estimator_.Process();
|
||||
}
|
||||
|
||||
void ReceiveSideCongestionController::SetMaxDesiredReceiveBitrate(
|
||||
DataRate bitrate) {
|
||||
remb_throttler_.SetMaxDesiredReceiveBitrate(bitrate);
|
||||
}
|
||||
|
||||
} // namespace webrtc
|
||||
|
||||
Reference in New Issue
Block a user