Commit Graph

511 Commits

Author SHA1 Message Date
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
fc7ec8e9f8 Reland "Moved congestion controller to goog_cc folder."
This is a reland of e6cefdf9c572cdce55ff0497ad6e516c76132ee8.

Original change's description:
> Moved congestion controller to goog_cc folder.
> 
> Bug: webrtc:8415
> Change-Id: I2070da0cacf1dbfc4b6a89285af3e68fd03497ab
> Reviewed-on: https://webrtc-review.googlesource.com/43841
> Commit-Queue: Sebastian Jansson <srte@webrtc.org>
> Reviewed-by: Björn Terelius <terelius@webrtc.org>
> Reviewed-by: Stefan Holmer <stefan@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#21928}

Bug: webrtc:8415
Change-Id: Ib5cf8641466655d64ac80f720561817f4cab49a9
Reviewed-on: https://webrtc-review.googlesource.com/53062
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22244}
2018-03-01 10:16:12 +00:00
8acd5f8334 Moved network_control out from rtp specific folder.
The functionality in network_control is by design not rtp specific and
should live outside the rtp directory in congestion_controller.

Bug: webrtc:8415
Change-Id: I68778f1a630c8e93950040bc56ee864c201b5990
Reviewed-on: https://webrtc-review.googlesource.com/55383
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22240}
2018-03-01 08:53:04 +00:00
98e0111ea5 Implementing interface with new SSCC
Makes the new task queue based congestion controller implement the
SendSideCongestionControllerInterface.

Bug: webrtc:8415
Change-Id: I3dfe11c2eb200bc8d85c83edf78d7fdd0129bbff
Reviewed-on: https://webrtc-review.googlesource.com/56781
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22235}
2018-02-28 17:30:29 +00:00
56da2f7868 Added unit tests for new congestion controller.
This CL activates unit tests for the task queue based send side
congestion controller that will replace the current one in the future.

To be able to have the tests run side by side with the tests of the old
congestion controller, the old tests have been prefixed with "Legacy".

This CL also contains some minor fixes to the new congestion controller
code.

Bug: webrtc:8415
Change-Id: I5e7474d42f17fcbfef402e26f638846fa3424695
Reviewed-on: https://webrtc-review.googlesource.com/55381
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22229}
2018-02-28 14:03:48 +00:00
3c24ea8340 Removed SetTransportOverhead in transport controller.
SetTransportOverhead was used by send streams to signal the packet
overhead that they received from Call. However, call receives the value
from OnNetworkRouteChanged in WebRtcVideoChannel and
WebRtcVoiceMediaChannel which is already propagated to
RtpTransportControllerSend. By skipping the round trip, the interface on
the rtp transport controller can be reduced.

Bug: None
Change-Id: I759b1207aab214bbc2b993106f6ff7cc24e177f7
Reviewed-on: https://webrtc-review.googlesource.com/57182
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22226}
2018-02-28 12:36:16 +00:00
83b184210f Added namespace to new congestion controller.
This makes it easier to have the new and the old send side congestion
controller side by side. This namespace is only temporary. As soon the
new task queue based congestion controller is fully functional, the old
will be deprecated and removed together with the temporary namespace.

Bug: webrtc:8415
Change-Id: Ie817511345c91cab2ebca68f038075875c7e6529
Reviewed-on: https://webrtc-review.googlesource.com/56720
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22221}
2018-02-28 09:52:43 +00:00
6bcd7f6618 Adding task queue based congestion controller.
To be able to safely move over to the new code, the revised
code is added alongside the old code. Most of the files added
in this CL are more or less direct copies of the previous code.

This new version of send side congestion controller will be
activated under a field trial in a followup CL.

Bug: webrtc:8415
Change-Id: I034e583cf891a8f6357119739a1517cc0a4abe88
Reviewed-on: https://webrtc-review.googlesource.com/53322
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22212}
2018-02-27 18:15:59 +00:00
dfde334be0 Adding SendSideCongestionControllerInterface.
This prepares for a later CL providing two implementations of
SendSideCongestionController.

Bug: webrtc:8415
Change-Id: I890dbe4b88bf609921558e03aac66b42629857c8
Reviewed-on: https://webrtc-review.googlesource.com/56700
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22151}
2018-02-22 14:19:53 +00:00
e5447fb6d1 Removed fake rtp transport controller send.
The fake rtp transport controller is only used by CallBitrateTest, but
the functionality tested in CallBitrateTest is now tested in
RtpBitrateConfiguratorTest. Removing the fake rtp transport controller
send reduces the complexity of refactoring the rtp transport controller
send interface.

Bug: webrtc:8415
Change-Id: I4673daea4e68521e7e14293514830d6e704219bc
Reviewed-on: https://webrtc-review.googlesource.com/54480
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22125}
2018-02-21 13:39:16 +00:00
645898a454 Reduce severity of BWE start bitrate log to INFO.
Bug: None
Change-Id: I0fb0a441a1851f1a9b16d7c466e91b025416e6d5
Reviewed-on: https://webrtc-review.googlesource.com/55382
Reviewed-by: Magnus Flodman <mflodman@webrtc.org>
Commit-Queue: Stefan Holmer <stefan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22098}
2018-02-20 12:25:35 +00:00
e4be6dad65 Removing access to send side cc in rtp controller.
This CL removes direct access to SendSideCongestionController (SSCC) via
the RtpTransportControllerSend interface and replaces all usages with
calls on RtpTransportControllerSend which will in turn calls SSCC. This
prepares for later refactor of RtpTransportControllerSend.

Bug: webrtc:8415
Change-Id: I68363a3ab0203b95579f747402a1e7f58a5eeeb5
Reviewed-on: https://webrtc-review.googlesource.com/53860
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22044}
2018-02-16 10:40:48 +00:00