blob: f203c4e6f8b48be907232b882759959929c9b0ef [file] [log] [blame]
nissecae45d02017-04-24 05:53:20 -07001/*
2 * Copyright (c) 2017 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020011#include "call/rtp_transport_controller_send.h"
nissecae45d02017-04-24 05:53:20 -070012
13namespace webrtc {
14
15RtpTransportControllerSend::RtpTransportControllerSend(
16 Clock* clock,
17 webrtc::RtcEventLog* event_log)
Stefan Holmer5c8942a2017-08-22 16:16:44 +020018 : pacer_(clock, &packet_router_, event_log),
19 send_side_cc_(clock, nullptr /* observer */, event_log, &pacer_) {}
nissecae45d02017-04-24 05:53:20 -070020
nisse76e62b02017-05-31 02:24:52 -070021PacketRouter* RtpTransportControllerSend::packet_router() {
22 return &packet_router_;
23}
24
Stefan Holmer5c8942a2017-08-22 16:16:44 +020025PacedSender* RtpTransportControllerSend::pacer() {
26 return &pacer_;
27}
28
nisse76e62b02017-05-31 02:24:52 -070029TransportFeedbackObserver*
30RtpTransportControllerSend::transport_feedback_observer() {
31 return &send_side_cc_;
32}
33
34RtpPacketSender* RtpTransportControllerSend::packet_sender() {
Stefan Holmer5c8942a2017-08-22 16:16:44 +020035 return &pacer_;
nisse76e62b02017-05-31 02:24:52 -070036}
37
sprangdb2a9fc2017-08-09 06:42:32 -070038const RtpKeepAliveConfig& RtpTransportControllerSend::keepalive_config() const {
39 return keepalive_;
40}
41
Stefan Holmer5c8942a2017-08-22 16:16:44 +020042void RtpTransportControllerSend::SetAllocatedSendBitrateLimits(
43 int min_send_bitrate_bps,
44 int max_padding_bitrate_bps) {
Sebastian Janssonea86bb72018-02-14 16:53:38 +000045 pacer_.SetSendBitrateLimits(min_send_bitrate_bps, max_padding_bitrate_bps);
Stefan Holmer5c8942a2017-08-22 16:16:44 +020046}
47
sprangdb2a9fc2017-08-09 06:42:32 -070048void RtpTransportControllerSend::SetKeepAliveConfig(
49 const RtpKeepAliveConfig& config) {
50 keepalive_ = config;
51}
Sebastian Janssone4be6da2018-02-15 16:51:41 +010052Module* RtpTransportControllerSend::GetModule() {
53 return &send_side_cc_;
54}
55CallStatsObserver* RtpTransportControllerSend::GetCallStatsObserver() {
56 return &send_side_cc_;
57}
58void RtpTransportControllerSend::RegisterPacketFeedbackObserver(
59 PacketFeedbackObserver* observer) {
60 send_side_cc_.RegisterPacketFeedbackObserver(observer);
61}
62void RtpTransportControllerSend::DeRegisterPacketFeedbackObserver(
63 PacketFeedbackObserver* observer) {
64 send_side_cc_.DeRegisterPacketFeedbackObserver(observer);
65}
66void RtpTransportControllerSend::RegisterNetworkObserver(
67 NetworkChangedObserver* observer) {
68 send_side_cc_.RegisterNetworkObserver(observer);
69}
70void RtpTransportControllerSend::DeRegisterNetworkObserver(
71 NetworkChangedObserver* observer) {
72 send_side_cc_.DeRegisterNetworkObserver(observer);
73}
74void RtpTransportControllerSend::SetBweBitrates(int min_bitrate_bps,
75 int start_bitrate_bps,
76 int max_bitrate_bps) {
77 send_side_cc_.SetBweBitrates(min_bitrate_bps, start_bitrate_bps,
78 max_bitrate_bps);
79}
80void RtpTransportControllerSend::OnNetworkRouteChanged(
81 const rtc::NetworkRoute& network_route,
82 int start_bitrate_bps,
83 int min_bitrate_bps,
84 int max_bitrate_bps) {
85 send_side_cc_.OnNetworkRouteChanged(network_route, start_bitrate_bps,
86 min_bitrate_bps, max_bitrate_bps);
87}
88void RtpTransportControllerSend::OnNetworkAvailability(bool network_available) {
89 send_side_cc_.SignalNetworkState(network_available ? kNetworkUp
90 : kNetworkDown);
91}
92void RtpTransportControllerSend::SetTransportOverhead(
93 size_t transport_overhead_bytes_per_packet) {
94 send_side_cc_.SetTransportOverhead(transport_overhead_bytes_per_packet);
95}
96RtcpBandwidthObserver* RtpTransportControllerSend::GetBandwidthObserver() {
97 return send_side_cc_.GetBandwidthObserver();
98}
99bool RtpTransportControllerSend::AvailableBandwidth(uint32_t* bandwidth) const {
100 return send_side_cc_.AvailableBandwidth(bandwidth);
101}
102int64_t RtpTransportControllerSend::GetPacerQueuingDelayMs() const {
103 return send_side_cc_.GetPacerQueuingDelayMs();
104}
105int64_t RtpTransportControllerSend::GetFirstPacketTimeMs() const {
106 return send_side_cc_.GetFirstPacketTimeMs();
107}
108RateLimiter* RtpTransportControllerSend::GetRetransmissionRateLimiter() {
109 return send_side_cc_.GetRetransmissionRateLimiter();
110}
111void RtpTransportControllerSend::EnablePeriodicAlrProbing(bool enable) {
112 send_side_cc_.EnablePeriodicAlrProbing(enable);
113}
114void RtpTransportControllerSend::OnSentPacket(
115 const rtc::SentPacket& sent_packet) {
116 send_side_cc_.OnSentPacket(sent_packet);
117}
sprangdb2a9fc2017-08-09 06:42:32 -0700118
nissecae45d02017-04-24 05:53:20 -0700119} // namespace webrtc