122 Commits

Author SHA1 Message Date
Sebastian Jansson
0c87fe85b8 Removes frequent log messages from BBR Controller.
Bug: webrtc:8415
Change-Id: Ibe8b42f8e7c1174ba82d371493af5421665c5d22
Reviewed-on: https://webrtc-review.googlesource.com/70241
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22884}
2018-04-16 16:08:08 +00:00
Sebastian Jansson
324865a206 Removes common header for network units.
The code using the units now depends on specific targets to make the
dependencies more clear

Bug: None
Change-Id: I3200d57a2974b6981db68f05d84391cbbb06e981
Reviewed-on: https://webrtc-review.googlesource.com/70181
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22882}
2018-04-16 14:51:18 +00:00
Sebastian Jansson
f7ffd94ad2 Removes abbreviated seconds functions on network time classes.
Having only one name for seconds makes the interface more consistent.
The non-abbreviated was chosen since it's used less frequently than
ms() and us().

Bug: None
Change-Id: Ia29ff2f9f18f3dddcde9bac4f041695cef2c8f0f
Reviewed-on: https://webrtc-review.googlesource.com/69817
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Reviewed-by: Benjamin Wright <benwright@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22877}
2018-04-16 12:47:38 +00:00
Sebastian Jansson
e31be15d47 Moves data rate related operations to data_rate.h
This reduces the number of files.

Bug: None
Change-Id: Ia32b7b7cc3260fbecc2b9a3c75723dd4a76c6d5b
Reviewed-on: https://webrtc-review.googlesource.com/69816
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Reviewed-by: Benjamin Wright <benwright@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22874}
2018-04-16 11:24:08 +00:00
Sebastian Jansson
30bd4038cf Splits network units into separate headers.
This CL moves the network units files into a separate folder with a
separate BUILD file. It also splits the units into separate files.
This prepares for moving all or some of the units to somewhere that
can be accessed by more components.

Bug: None
Change-Id: I4ebbc19088b024ba920b0b3c64e5f57431f4f955
Reviewed-on: https://webrtc-review.googlesource.com/68660
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22861}
2018-04-13 13:24:28 +00:00
Sebastian Jansson
a73538828f Fixes potential crash in GoogCcNetworkController
UpdatePacingRates required that a bandwidth estimate was available and
would otherwise crash. This CL ensures that there is an initial bandwidth
estimate available from the beginning.

Bug: webrtc:8415
Change-Id: I20c3b444eac42326a78cfebee70b4c1aa370c867
Reviewed-on: https://webrtc-review.googlesource.com/69802
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22857}
2018-04-13 12:24:18 +00:00
Sebastian Jansson
7d3efacb61 Disable toggling of controller in SSCC.
This disables toggling between transport feedback based  controller and
the fall back controller in SendSideCongestionController. The toggling
seems to cause issues with the probing in certain circumstances. Since
it's feasible to run experiments without the toggling, disable it for now.

Bug: webrtc:8415
Change-Id: Ia4a827e95d730d651eaf3facbee7e9a5b0cb2562
Reviewed-on: https://webrtc-review.googlesource.com/69803
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22856}
2018-04-13 11:54:38 +00:00
Sebastian Jansson
70488de694 Check for controller in SSCC when route changed.
Fixes potential crash in SendSideCongestionController when route is
changed before network is available.

Bug: webrtc:8415
Change-Id: I781f0e342e5bb42fedbf96c9c5c6d2c199ab3192
Reviewed-on: https://webrtc-review.googlesource.com/69801
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22851}
2018-04-13 10:49:58 +00:00
Mirko Bonadei
e32bb50855 Adding missing #include in send_side_congestion_controller.
Not including <iterator> creates problems on some build systems because
std::back_inserter is defined there.

Bug: None
Change-Id: I27180f72dd327e3a0caab35d3a33907f1e0c4296
Reviewed-on: https://webrtc-review.googlesource.com/69323
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22825}
2018-04-11 14:33:27 +00:00
Sebastian Jansson
342695d068 Removes network ostream operators.
The ostream operators does not work consistently with gtest since the
definitions would have to be included before the first include of gtest.
This is tricky to ensure and the end result is that the operators will
sometimes work and sometimes not without obvious explanations.
To avoid causing confusing behavior, this CL removes the operators
pending a better solution.

Bug: None
Change-Id: I66bead0efb7246d368359ddf9e9bfad9d67c05da
Reviewed-on: https://webrtc-review.googlesource.com/68640
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22808}
2018-04-10 14:59:15 +00:00
Sebastian Jansson
a73f8161aa Removing static initializers for BBR.
The static initializers caused issues with chromium build. This should
fix it for now.

Bug: None
Change-Id: I4592df0e2bd02980421bb6319c24e7b6983d2252
Reviewed-on: https://webrtc-review.googlesource.com/69020
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22807}
2018-04-10 14:45:45 +00:00
Sebastian Jansson
ae9057831f Removed observer from network controller interface.
Moving the responsibility for calling callbacks from implementations
of NetworkControllerInterface to SendSideCongestionController. This
decreases the coupling and makes the callbacks more explicit.

Bug: webrtc:8415
Change-Id: Ie75effbde01533106080bb6c40308b0c20064c45
Reviewed-on: https://webrtc-review.googlesource.com/66882
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22793}
2018-04-09 11:54:38 +00:00
Sebastian Jansson
2808ae99f8 Adds BBR network controller field trial.
This CL adds a field trial to enable the BBR congestion control method.
Since BBR is only implemented to handle per packet feedback,
SendSideCongestionController is modified to recreate network controllers
when the packet feedback availability changes and the BBR experiment is
enabled.

This also means that the periodic task used for process updates in the
network controllers has to recreated.

Bug: webrtc:8415
Change-Id: Ia24f7ad35336d2cc7a02bb3a445f1a84b8643475
Reviewed-on: https://webrtc-review.googlesource.com/61520
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22791}
2018-04-09 10:42:18 +00:00
Sebastian Jansson
5059c07604 Making periodic tasks in SSCC stoppable.
Adding Stop method of periodic tasks in SendSideCongestionController
(SSCC). This is utilized in a later CL enabling switching the network
controller which requires stopping the old periodic task and starting a
new one with a new update period.

Bug: webrtc:8415
Change-Id: I2e56c1e1fe10d88c038b2f290d94c08723ddf4e4
Reviewed-on: https://webrtc-review.googlesource.com/67280
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22786}
2018-04-09 09:09:59 +00:00
Sebastian Jansson
f2e3e7a25a Removed observer from probe controller.
Replacing observer interface with polling for pending probe clusters.
The purpose is to make it easier to reason about and control side
effects and to prepare for a similar change in the network controller
interface.

Bug: webrtc:8415
Change-Id: I8101cfda22e640a8e0fa75f3f6e63876db826a89
Reviewed-on: https://webrtc-review.googlesource.com/66881
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22775}
2018-04-06 16:13:37 +00:00
Sebastian Jansson
ac6475e031 Reland "Added BBR network controller."
This is a reland of 8ac9bb4d52a687b34158dc52c8c25830b23b8333

Original change's description:
> Added BBR network controller.
> 
> BBR is a congestion control method that is initially developed for TCP.
> This CL adds an implementation of BBR ported from QUIC for use with
> WebRTC. An upcoming CL enables it via a field trial.
> 
> Bug: webrtc:8415
> Change-Id: Ie4261d2e43bafa15aa928a7cadcfec256107cdbc
> Reviewed-on: https://webrtc-review.googlesource.com/39788
> Commit-Queue: Sebastian Jansson <srte@webrtc.org>
> Reviewed-by: Philip Eliasson <philipel@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#22647}

Bug: webrtc:8415
Change-Id: I090e4116d1f470acbd64af31520654e1bd8dfcda
Reviewed-on: https://webrtc-review.googlesource.com/65200
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22766}
2018-04-06 10:30:22 +00:00
Sebastian Jansson
667f7a7ed7 Added conversion to double from network time units.
Bug: None
Change-Id: Ib936bb232418fdd06b48f9c5bea1d2b1c80a09b1
Reviewed-on: https://webrtc-review.googlesource.com/65541
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22710}
2018-04-03 16:25:00 +00:00
Jonas Olsson
74395345e8 Add ToString() methods to classes with << operators, preparing for deprecations.
Bug: webrtc:8982
Change-Id: I9b8792a229539dd9848f4d9936fe343f4bf9ad49
Reviewed-on: https://webrtc-review.googlesource.com/63200
Commit-Queue: Jonas Olsson <jonasolsson@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22705}
2018-04-03 11:21:30 +00:00
Sebastian Jansson
01cb965d34 Moved ostream operators for network units to test.
Added ToString functions in a separate header and move the ostream
operators to a test only header.

Bug: webrtc:8982
Change-Id: If547173aa39bbae2244531e2d3091886f14eae31
Reviewed-on: https://webrtc-review.googlesource.com/65280
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Jonas Olsson <jonasolsson@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22674}
2018-03-29 11:21:37 +00:00
Sebastian Jansson
63b48df334 Removed static const network units.
Static const objects can cause what's called a "static initialization
order fiasco". This CL removes the statically initialized network units
in favor of constexpr defined versions available via static functions.

Bug: webrtc:8415
Change-Id: Ib1b316ae007481c52a53b2d1bb0352a630a220e2
Reviewed-on: https://webrtc-review.googlesource.com/65164
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22670}
2018-03-29 09:45:27 +00:00
Ying Wang
19c242d119 Revert "Added BBR network controller." due to downstream test failure.
This reverts commit 8ac9bb4d52a687b34158dc52c8c25830b23b8333.

Reason for revert: <INSERT REASONING HERE>

Original change's description:
> Added BBR network controller.
> 
> BBR is a congestion control method that is initially developed for TCP.
> This CL adds an implementation of BBR ported from QUIC for use with
> WebRTC. An upcoming CL enables it via a field trial.
> 
> Bug: webrtc:8415
> Change-Id: Ie4261d2e43bafa15aa928a7cadcfec256107cdbc
> Reviewed-on: https://webrtc-review.googlesource.com/39788
> Commit-Queue: Sebastian Jansson <srte@webrtc.org>
> Reviewed-by: Philip Eliasson <philipel@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#22647}

TBR=philipel@webrtc.org,srte@webrtc.org

Change-Id: Ife354d40bfc755f899cf485f3308575516206997
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:8415
Reviewed-on: https://webrtc-review.googlesource.com/65180
Reviewed-by: Ying Wang <yinwa@webrtc.org>
Commit-Queue: Ying Wang <yinwa@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22651}
2018-03-28 13:54:18 +00:00
Sebastian Jansson
8ac9bb4d52 Added BBR network controller.
BBR is a congestion control method that is initially developed for TCP.
This CL adds an implementation of BBR ported from QUIC for use with
WebRTC. An upcoming CL enables it via a field trial.

Bug: webrtc:8415
Change-Id: Ie4261d2e43bafa15aa928a7cadcfec256107cdbc
Reviewed-on: https://webrtc-review.googlesource.com/39788
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22647}
2018-03-28 12:28:26 +00:00
Sebastian Jansson
11b2e0ac7c Added support for congestion windows in test helper.
This is used by BBR which is introduced in a future CL.

Bug: webrtc:8415
Change-Id: Ie5b3e6e58b7c9c7a35fc21acb636103d7f5daec3
Reviewed-on: https://webrtc-review.googlesource.com/64920
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22643}
2018-03-28 10:28:46 +00:00
Sebastian Jansson
6c95bdc5ab Adding network control test helper.
Adding a simple network simulator and a mock network control observer.
This prepares for upcoming CLs adding unit tests network controllers.

Bug: webrtc:8415
Change-Id: I5e8414576776fb8ae897bec73a1b062c8dd3e393
Reviewed-on: https://webrtc-review.googlesource.com/61507
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22622}
2018-03-27 10:23:23 +00:00
Sebastian Jansson
b0ba558c96 Adding WindowedFilter class for BBR.
This is part of a series of CLs adding a network controller based on
the BBR congestion control method. The code is based on the QUIC BBR
implementation in Chromium.

Bug: webrtc:8415
Change-Id: I4478e8d5e2abd361b0d22de00ebe04bde9ef18f6
Reviewed-on: https://webrtc-review.googlesource.com/63681
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22592}
2018-03-25 15:20:28 +00:00
Sebastian Jansson
883f470d60 Adding DataTransferTracker class for BBR.
This class is completely new and tracks data transfer in a slightly
different way compared to the BBR implementation in QUIC. The
fundamental change is that receive time is used rather than packet
index to identify the packets over which data rates should be
calculated.

This is part of a series of CLs adding a network controller based on
the BBR congestion control method. The code is based on the QUIC BBR
implementation in Chromium.

Bug: webrtc:8415
Change-Id: I9d1f12634073ac89c4d542f965e3677a89a1526c
Reviewed-on: https://webrtc-review.googlesource.com/63680
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22589}
2018-03-24 11:45:38 +00:00
Sebastian Jansson
9bd1af199b Adding RttStats class for BBR.
This is part of a series of CLs adding a network controller based on
the BBR congestion control method. The code is based on the QUIC BBR
implementation in Chromium.

Bug: webrtc:8415
Change-Id: Ib952b9c3f1cdd0741330a5ae95aebcf2488f7f1d
Reviewed-on: https://webrtc-review.googlesource.com/63644
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22581}
2018-03-23 13:17:55 +00:00
Sebastian Jansson
1d430f727d Interface for packet feedback availability in SSCC
This CL adds a function to the SendSideCongestionController interface
for reporting per packet feedback availability.

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: Ifcb6837bb80c5fcfc1f12f4f93ec38cc2903118f
Reviewed-on: https://webrtc-review.googlesource.com/63205
Reviewed-by: Niels Moller <nisse@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22565}
2018-03-22 13:38:49 +00:00
Sebastian Jansson
247e0b4713 Disabling periodic tasks on SSCC in unit tests.
Time triggered tasks in the SendSideCongestionController caused
flakyness in long running unit tests of SendSideCongestionController.

This CL lets the unit test code disable the periodic tasks so they are
only triggered on demand.

Bug: webrtc:9039
Change-Id: I934045d7e6eeaa765dd221cef87389f1d98b58a5
Reviewed-on: https://webrtc-review.googlesource.com/63265
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22536}
2018-03-21 13:50:38 +00:00
Sebastian Jansson
b38b05b4b8 Adding srte as owner in modules/congestion_controller.
Adding srte@webrtc.org as owner in modules/congestion_controller.

Bug: None
Change-Id: Ib96f9d8cbb13d34d9193f4f9317a1c884049179d
Reviewed-on: https://webrtc-review.googlesource.com/63340
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22518}
2018-03-20 16:29:08 +00:00
Rasmus Brandt
9047dac757 Disable flaky test SendSideCongestionControllerTest/PacerQueueEncodeRatePushback.
TBR=srte@webrtc.org
NOTRY=TRUE

Bug: webrtc:9039
Change-Id: Ieb4cd437113e6291a326dff05dbcb96cbfdc06a6
Reviewed-on: https://webrtc-review.googlesource.com/63260
Commit-Queue: Rasmus Brandt <brandtr@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22508}
2018-03-20 10:12:45 +00:00
Sebastian Jansson
537012405b Replacing unique pointer with raw pointer in SSCC checks.
Replacing the unique pointer used for access checks with a raw pointer
pointing to the object owned by the unique pointer. This is to stop
tsan from detecting a race between .get() done on the task queue and
.reset() done in the destructor.

Bug: webrtc:8415
Change-Id: Iae2ea9a2d38f319e73146e6b1e360b11b1708c76
Reviewed-on: https://webrtc-review.googlesource.com/62560
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22492}
2018-03-19 13:46:41 +00:00
Sebastian Jansson
317a522876 Fixes to posting delayed process tasks in SSCC.
The task queue based SendSideCongestionController (SSCC) was accessing
a unique pointer to the task queue from the task queue itself. This
triggered a tsan check failure when resetting the same unique pointer.

Also move declaration of SSCC member in RtpTransportControllerSend last,
to ensure that it, and its TaskQueue, are destroyed before other members.

Bug: webrtc:8415
Change-Id: I75c93f41deab637f7e4766ac4b61713c86f866e9
Reviewed-on: https://webrtc-review.googlesource.com/62143
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22478}
2018-03-16 15:28:21 +00:00
Sebastian Jansson
aca5a7df73 Improvements to network control types.
This CL prepares for adding the BBR network controller and
unit tests for GoogCC network controller.

The changes include:
* Adding pad_rate helper method on PacerConfig.
* Adding ostream operators for controller feedback structs.
* Adding increment operator to Timestamp class.
* Adding kEpoch to Timestamp class to represent 0.
* Rounding when multiplying with double.

Bug: webrtc:8415
Change-Id: I58289f37a6f9f2eee0a88bb06fb24dc295942862
Reviewed-on: https://webrtc-review.googlesource.com/61503
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22458}
2018-03-15 15:40:08 +00:00
Sebastian Jansson
2ce1e749a8 Setting rate before callback in network control handler.
last_target_rate_ is used to retrieve the bandwidth in the callback
handler in RtpTransportControllerSend. If last_target_rate_ is not
set before the callback in OnNetworkInvalidation, the value will
be outdated.

Bug: webrtc:8415
Change-Id: Ic6f898db212a02c2afa1997840e3c4929bb7f0f7
Reviewed-on: https://webrtc-review.googlesource.com/61720
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22428}
2018-03-14 14:29:35 +00:00
Sebastian Jansson
a03585f611 Removing SetTransportOverhead from SSCC Interface.
This is a follow up on an earlier CL removing the usage of
SetTransportOverhead.

Bug: webrtc:8415
Change-Id: I8d9572c06f3ae1e8cacbe7b9bd57a9b65f371c0e
Reviewed-on: https://webrtc-review.googlesource.com/61502
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22427}
2018-03-14 14:27:35 +00:00
Sebastian Jansson
68ee4653ef Moving SetPacingFactor and allocation limits to SSCC.
This CL adds methods to the SendSideCongestionController (SSCC)
interface for configuring pacing factor and allocation based data rate limits.
This means that old SSCC implement the same interface as the new, task
queue based SSCC. This also allows merging the max total allocated
bit rate into SetAllocatedSendBitrateLimits.

This is done in preparation for an upcoming CL where the SSCC version
is controlled by a field trial.

Bug: webrtc:8415
Change-Id: I4d5446a3bedd5b0c725dbd009fb75815fd661eff
Reviewed-on: https://webrtc-review.googlesource.com/61320
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22408}
2018-03-13 16:58:21 +00:00
Sebastian Jansson
5f22be7cf8 Congestion controller processing using delayed tasks.
Replacing Module based mechanism for processing with posting tasks.
This prepares for allowing the interval to be changed at runtime and
for removing the dependency on Module threads.

Bug: webrtc:8415
Change-Id: Iaad50466bec695be4ba26d8bd670a1981f2e0df4
Reviewed-on: https://webrtc-review.googlesource.com/60862
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22406}
2018-03-13 16:48:31 +00:00
Sebastian Jansson
efbcfb13a7 Configuration in constructor of Goog CC.
Adding configuration of new GoogCcNetworkController to initializer, this
makes sure that it is properly initialized from the start. To achieve
this SendSideCongestionController waits until it has received the
necessary information to construct the object. This information should
be provided in the constructor for SendSideCongestionController in the
future.

Bug: webrtc:8415
Change-Id: Icc09b8b246bae9f9704b80855fc4caa3450b34fc
Reviewed-on: https://webrtc-review.googlesource.com/58099
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22404}
2018-03-13 16:05:21 +00:00
Sebastian Jansson
19704ec698 Removing AvailableBandwidth method on transport controller.
Removing the Synchronous call AvailableBandwidth from the
RtpTransportControllerSend interface. The bandwidth estimate is
provided trough a new interface that communicates with a struct
making it easier to add parameters in the future.

This prepares for removing locking behavior in
SendSideCongestionController that exists just to support this feature.

To keep backwards compatibility with the old
SendSideCongestionController, the struct TargetTransferRate
is constructed in RtpTransportControllerSend. This step can be
removed in the future when the old SendSideCongestionController
 is deprecated.

Bug: webrtc:8415
Change-Id: I06f64a89848157de412901c989650d1ecf35246b
Reviewed-on: https://webrtc-review.googlesource.com/60800
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22387}
2018-03-12 15:53:49 +00:00
Sebastian Jansson
45d9c1de9c Added congestion control functionality to pacer.
This adds the ability to the pacer to apply a congestion window by
tracking sent data. This makes it more reliable when the congestion
window is small enough to be filled at a high rate as there are less
thread context switches that might affect the timing and performance.

Outstanding data is not reduced by the pacer as it has no information
about acknowledged packet feedback. This is by design as the pacer would
also need to keep track of on which connection packets were sent or
received, requiring a larger, more complex, change to the pacer.

Bug: webrtc:8415
Change-Id: I4ecd303e835552ced042cd21186da910288a8258
Reviewed-on: https://webrtc-review.googlesource.com/51764
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22371}
2018-03-09 17:40:24 +00:00
Sebastian Jansson
dae6aad6e7 Providing bitrate constraints in SSCC constructor.
This ensures that SendSideCongestionController is always initialized
with starting bitrate and bitrate limits.

Bug: webrtc:8415
Change-Id: If3b75e935dda755f9e0f40af1021f97ff150c9e9
Reviewed-on: https://webrtc-review.googlesource.com/59224
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22370}
2018-03-09 17:26:14 +00:00
Erik Språng
8493594dc2 Cleanup of TransportFeedbackObserver interface
The GetTransportFeedbackVector() method is only used in tests, and they
can access the class directly anyway. Keeping it is adding code bloat
and is also making upcoming refactoring more difficult.

Bug: webrtc:8975
Change-Id: I8323addb3c1461dd73b30353c8d9fe9410471c15
Reviewed-on: https://webrtc-review.googlesource.com/60860
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22349}
2018-03-08 22:51:53 +00:00
Sebastian Jansson
a06e919b9f Removing interface to access pacer via SSCC.
SSCC was accessing the pacer just to report values back to
RtpTransportControllerSend which already owns the pacer.
This CL moves those access methods.

To make RtpTransportControllerSend simpler, Call is made
responsible to keep track of network status used only as a
condition for report the pacer queuing delay.

Bug: webrtc:8415
Change-Id: I306bc9fcd3d8dcc7a637d51f2629ececebd48cad
Reviewed-on: https://webrtc-review.googlesource.com/60483
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22331}
2018-03-07 19:01:50 +00:00
Karl Wiberg
12edf4ce34 Separate build target for rtc_base/numerics/safe_minmax.h
So that we can avoid dependency cycles.

Bug: none
Change-Id: I821d9f1319dff01403d6e4e310cbb2d4b2b125e8
Reviewed-on: https://webrtc-review.googlesource.com/60500
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22328}
2018-03-07 14:12:00 +00:00
philipel
db4fa4b944 Propagating total_bitrate_bps from BitrateAllocator to ProbeController, part 3.
Trigger on total bitrate change.

Bug: webrtc:8955
Change-Id: I2373a1b7f139c7ea748a9641593e714d6895c8f6
Reviewed-on: https://webrtc-review.googlesource.com/59323
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22323}
2018-03-07 10:31:35 +00:00
Sebastian Jansson
8d9dcb1c89 Adding bps_or method to DataRate class.
Bug: webrtc:8415
Change-Id: I64e46b63d82cb843f0710839c1fc22e2440ae7e1
Reviewed-on: https://webrtc-review.googlesource.com/59222
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22285}
2018-03-05 11:47:52 +00:00
Sebastian Jansson
ede748f14e Adding waits to SendSideCongestionController tests.
Small changes to the unit tests for send side congestion controller.
Mostly adding some extra waits and expectation verifications. This
prepares for an upcoming CL.

Bug: webrtc:8415
Change-Id: Id3086a485eda99732d01192cac9a91141158ab45
Reviewed-on: https://webrtc-review.googlesource.com/59223
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22270}
2018-03-02 14:08:29 +00:00
Sebastian Jansson
45087cd23f Moved retransmission rate limiter to Call class.
Ownership of the retransmission rate limiter for video is moved
from send side congestion controller to Call. This is to reduce the
interface on the rtp transport controller send.

Bug: webrtc:8415
Change-Id: Ie9c7317400a9eb61a3c8325b9e527844ffc13769
Reviewed-on: https://webrtc-review.googlesource.com/58745
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22254}
2018-03-01 17:22:28 +00:00
Sebastian Jansson
0f9d9a9a12 Removed unused DeRegisterNetworkObserver.
DeRegisterNetworkObserver is not used, since
RtpTransportControllerSend owns the thread on which
SendSideCongestionController runs it would not be safe to allow it to be
called from outside. Deregistration should be done by destroying
RtpTransportControllerSend.

In the future, the RegisterObserver functions should be removed as well,
in favor of providing the observer in the constructor. This requires
breaking a circular dependency between RtpTransportControllerSend and
Call.

Bug: webrtc:8415
Change-Id: Ifeb4c5d4a41e4d8419994b3146980bdaaf9cd6a9
Reviewed-on: https://webrtc-review.googlesource.com/58098
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22249}
2018-03-01 12:52:28 +00:00