blob: 70061c1230161fa7dc5c926bac0cdc5b58dcf5de [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
nisse76e62b02017-05-31 02:24:52 -070025TransportFeedbackObserver*
26RtpTransportControllerSend::transport_feedback_observer() {
27 return &send_side_cc_;
28}
29
30RtpPacketSender* RtpTransportControllerSend::packet_sender() {
Stefan Holmer5c8942a2017-08-22 16:16:44 +020031 return &pacer_;
nisse76e62b02017-05-31 02:24:52 -070032}
33
sprangdb2a9fc2017-08-09 06:42:32 -070034const RtpKeepAliveConfig& RtpTransportControllerSend::keepalive_config() const {
35 return keepalive_;
36}
37
Stefan Holmer5c8942a2017-08-22 16:16:44 +020038void RtpTransportControllerSend::SetAllocatedSendBitrateLimits(
39 int min_send_bitrate_bps,
40 int max_padding_bitrate_bps) {
Sebastian Janssonea86bb72018-02-14 16:53:38 +000041 pacer_.SetSendBitrateLimits(min_send_bitrate_bps, max_padding_bitrate_bps);
Stefan Holmer5c8942a2017-08-22 16:16:44 +020042}
43
sprangdb2a9fc2017-08-09 06:42:32 -070044void RtpTransportControllerSend::SetKeepAliveConfig(
45 const RtpKeepAliveConfig& config) {
46 keepalive_ = config;
47}
Sebastian Jansson4c1ffb82018-02-15 16:51:58 +010048Module* RtpTransportControllerSend::GetPacerModule() {
49 return &pacer_;
50}
51void RtpTransportControllerSend::SetPacingFactor(float pacing_factor) {
52 pacer_.SetPacingFactor(pacing_factor);
53}
54void RtpTransportControllerSend::SetQueueTimeLimit(int limit_ms) {
55 pacer_.SetQueueTimeLimit(limit_ms);
56}
Sebastian Janssone4be6da2018-02-15 16:51:41 +010057Module* RtpTransportControllerSend::GetModule() {
58 return &send_side_cc_;
59}
60CallStatsObserver* RtpTransportControllerSend::GetCallStatsObserver() {
61 return &send_side_cc_;
62}
63void RtpTransportControllerSend::RegisterPacketFeedbackObserver(
64 PacketFeedbackObserver* observer) {
65 send_side_cc_.RegisterPacketFeedbackObserver(observer);
66}
67void RtpTransportControllerSend::DeRegisterPacketFeedbackObserver(
68 PacketFeedbackObserver* observer) {
69 send_side_cc_.DeRegisterPacketFeedbackObserver(observer);
70}
71void RtpTransportControllerSend::RegisterNetworkObserver(
72 NetworkChangedObserver* observer) {
73 send_side_cc_.RegisterNetworkObserver(observer);
74}
75void RtpTransportControllerSend::DeRegisterNetworkObserver(
76 NetworkChangedObserver* observer) {
77 send_side_cc_.DeRegisterNetworkObserver(observer);
78}
79void RtpTransportControllerSend::SetBweBitrates(int min_bitrate_bps,
80 int start_bitrate_bps,
81 int max_bitrate_bps) {
82 send_side_cc_.SetBweBitrates(min_bitrate_bps, start_bitrate_bps,
83 max_bitrate_bps);
84}
85void RtpTransportControllerSend::OnNetworkRouteChanged(
86 const rtc::NetworkRoute& network_route,
87 int start_bitrate_bps,
88 int min_bitrate_bps,
89 int max_bitrate_bps) {
90 send_side_cc_.OnNetworkRouteChanged(network_route, start_bitrate_bps,
91 min_bitrate_bps, max_bitrate_bps);
92}
93void RtpTransportControllerSend::OnNetworkAvailability(bool network_available) {
94 send_side_cc_.SignalNetworkState(network_available ? kNetworkUp
95 : kNetworkDown);
96}
97void RtpTransportControllerSend::SetTransportOverhead(
98 size_t transport_overhead_bytes_per_packet) {
99 send_side_cc_.SetTransportOverhead(transport_overhead_bytes_per_packet);
100}
101RtcpBandwidthObserver* RtpTransportControllerSend::GetBandwidthObserver() {
102 return send_side_cc_.GetBandwidthObserver();
103}
104bool RtpTransportControllerSend::AvailableBandwidth(uint32_t* bandwidth) const {
105 return send_side_cc_.AvailableBandwidth(bandwidth);
106}
107int64_t RtpTransportControllerSend::GetPacerQueuingDelayMs() const {
108 return send_side_cc_.GetPacerQueuingDelayMs();
109}
110int64_t RtpTransportControllerSend::GetFirstPacketTimeMs() const {
111 return send_side_cc_.GetFirstPacketTimeMs();
112}
113RateLimiter* RtpTransportControllerSend::GetRetransmissionRateLimiter() {
114 return send_side_cc_.GetRetransmissionRateLimiter();
115}
116void RtpTransportControllerSend::EnablePeriodicAlrProbing(bool enable) {
117 send_side_cc_.EnablePeriodicAlrProbing(enable);
118}
119void RtpTransportControllerSend::OnSentPacket(
120 const rtc::SentPacket& sent_packet) {
121 send_side_cc_.OnSentPacket(sent_packet);
122}
sprangdb2a9fc2017-08-09 06:42:32 -0700123
nissecae45d02017-04-24 05:53:20 -0700124} // namespace webrtc