Commit Graph

187 Commits

Author SHA1 Message Date
4a0c76402e Add rtcp::TransportFeedback::GetReceivedPackets()
It combines and simplify use of GetStatusVector and GetReceiveDeltas accesors.

Replace use of all GetStatusVector/GetReceiveDeltasUs

BUG=None

Review-Url: https://codereview.webrtc.org/2633923003
Cr-Commit-Position: refs/heads/master@{#16139}
2017-01-18 10:40:30 +00:00
d3fabe51b2 Improve computational performance of BWE by switching list to deque.
BUG=webrtc:6998

Review-Url: https://codereview.webrtc.org/2633293004
Cr-Commit-Position: refs/heads/master@{#16137}
2017-01-18 09:59:53 +00:00
b3dc2b7b1e Move congestion controller processing to the pacer thread.
Also rename it from pacer_thread_ to congestion_controller_thread_.

BUG=webrtc:6847

Review-Url: https://codereview.webrtc.org/2637783003
Cr-Commit-Position: refs/heads/master@{#16134}
2017-01-18 08:10:31 +00:00
804ab6f27f Parse MedianSlopeFilter-parameters to the correct variables.
BUG=webrtc:6995

Review-Url: https://codereview.webrtc.org/2631293003
Cr-Commit-Position: refs/heads/master@{#16113}
2017-01-17 11:30:05 +00:00
da5e9d04f5 Initiate mid-call probing even if estimated bitrate is at max configured bitrate.
BUG=none

Review-Url: https://codereview.webrtc.org/2634883003
Cr-Commit-Position: refs/heads/master@{#16107}
2017-01-17 10:08:28 +00:00
f4caaab518 Fix for bwe with overhead on audio only calls.
BUG=webrtc:6989

Review-Url: https://codereview.webrtc.org/2635893002
Cr-Commit-Position: refs/heads/master@{#16104}
2017-01-17 07:55:07 +00:00
2df07342ee Add WebRTC.BWE.MidCallProbing.* metrics.
BUG=webrtc:6984

Review-Url: https://codereview.webrtc.org/2629893003
Cr-Commit-Position: refs/heads/master@{#16100}
2017-01-16 17:31:49 +00:00
bc5d921659 Rename base/analytics/ to base/numerics/
BUG=webrtc:6832

Review-Url: https://codereview.webrtc.org/2626203002
Cr-Commit-Position: refs/heads/master@{#16060}
2017-01-13 17:14:33 +00:00
284542b882 Make OverheadObserver::OnOverheadChanged count RTP headers only
This lets the RTP code be unaware of lower layers, and the
SetTransportOverhead method is deleted from RTPSender and RtpRtcp.

Instead, that method is added to CongestionController and
TransportFeedbackAdapter, where it is more appropriate.

BUG=wertc:6847

Review-Url: https://codereview.webrtc.org/2589743002
Cr-Commit-Position: refs/heads/master@{#15995}
2017-01-10 16:58:32 +00:00
fd58b61068 BitrateProber::CreateProbeCluster now only accept one parameter (bitrate_bps).
Instead of having to specify a bitrate and how many packets to use,
the BitrateProber will now use the bitrate to calculate how many
bytes it will use to probe that bitrate instead.

For now, |kMinProbeDurationMs| is set to 15 ms which means that probing
at 1900 kbps will result in 1900/8*0.015 = 3.5 kB used. Since we can
expect packets to be smaller at the beginning of a stream (500 to 700
bytes) this will result in 7 to 5 packets sent for that bitrate, and
should work very similar to how the current initial probing works.

A minimum of 5 packets are always sent.

BUG=webrtc:6822

Review-Url: https://codereview.webrtc.org/2609113003
Cr-Commit-Position: refs/heads/master@{#15899}
2017-01-04 15:05:25 +00:00
49f465f4b2 Refactor bitrate_controller, remote_bitrate_estimator and congestion_contoller for gn check.
These targets are now checked:
- "//webrtc/modules/bitrate_controller/*"
- "//webrtc/modules/congestion_controller/*"
- "//webrtc/modules/remote_bitrate_estimator/*"

BUG=webrtc:6828
NOTRY=True

Review-Url: https://codereview.webrtc.org/2602563003
Cr-Commit-Position: refs/heads/master@{#15818}
2016-12-28 12:43:46 +00:00
84f83f8c0c Remove OverUseDetectorOptions from OveruseDetector since it isn't used.
BUG=None

Review-Url: https://codereview.webrtc.org/2580733004
Cr-Commit-Position: refs/heads/master@{#15809}
2016-12-27 18:43:01 +00:00
b29e652b10 Revert "Revert of Parse FlexFEC RTP headers in Call and add integration with BWE. (patchset #17 id:460001 of https://codereview.webrtc.org/2553863003/ )"
Problem fixed: RTP header extensions were not properly set in tests.

BUG=webrtc:5654

Review-Url: https://codereview.webrtc.org/2593963003
Cr-Commit-Position: refs/heads/master@{#15741}
2016-12-21 14:37:18 +00:00
70e4053844 Revert of Parse FlexFEC RTP headers in Call and add integration with BWE. (patchset #17 id:460001 of https://codereview.webrtc.org/2553863003/ )
Reason for revert:
Unexpected perf regressions.

Original issue's description:
> Parse FlexFEC RTP headers in Call and add integration with BWE.
>
> BUG=webrtc:5654
>
> Review-Url: https://codereview.webrtc.org/2553863003
> Cr-Commit-Position: refs/heads/master@{#15709}
> Committed: ab2ffa3b28

TBR=philipel@webrtc.org,stefan@webrtc.org,danilchap@webrtc.org,nisse@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:5654

Review-Url: https://codereview.webrtc.org/2589393002
Cr-Commit-Position: refs/heads/master@{#15727}
2016-12-21 08:22:03 +00:00
ab2ffa3b28 Parse FlexFEC RTP headers in Call and add integration with BWE.
BUG=webrtc:5654

Review-Url: https://codereview.webrtc.org/2553863003
Cr-Commit-Position: refs/heads/master@{#15709}
2016-12-20 11:33:58 +00:00
eb538fdcc6 Pass arrival time as an int64_t rather than a double to the MedianSlopeEstimator to avoid precision loss.
Also clean up the unit test.

BUG=webrtc:6892

Committed: https://crrev.com/ebcbcc3b2451f5c4fb07f7b37815bd54f364d057
Cr-Original-Commit-Position: refs/heads/master@{#15634}
Review-Url: https://codereview.webrtc.org/2578543002
Cr-Commit-Position: refs/heads/master@{#15650}
2016-12-16 10:37:10 +00:00
528ec3db0b Don't report packets with id -1 to the transport feedback adapter as they provide no value.
This also avoids an issue where -1 is interpreted as 0xFFFF by the feedback adapter, which in practice likely isn't a problem, but still wrong.

BUG=None

Review-Url: https://codereview.webrtc.org/2579263002
Cr-Commit-Position: refs/heads/master@{#15647}
2016-12-16 10:11:26 +00:00
5bc3945f8f Fix integer overflow in ProbeController.
Previously ProbeController would overflow int when calculating
min_bitrate_to_probe_further_bps and when probing bitrate is
above 17 Mbps. The problem was introduced in
https://codereview.webrtc.org/2504023002. Fixed ProbeController to use
int64_t internally for bitrate calculations.

BUG=6332

Review-Url: https://codereview.webrtc.org/2574533002
Cr-Commit-Position: refs/heads/master@{#15642}
2016-12-15 18:42:17 +00:00
b3564adc91 Avoid precision loss in TrendlineEstimator by passing the arrival time as an int64_t instead of a double.
BUG=webrtc:6884

Committed: https://crrev.com/c12cbaf9dd0729dd45f3fc45a1938d1b3455e40a
Review-Url: https://codereview.webrtc.org/2577463002
Cr-Original-Commit-Position: refs/heads/master@{#15631}
Cr-Commit-Position: refs/heads/master@{#15641}
2016-12-15 16:20:31 +00:00
43c382111d Revert of Avoid precision loss in TrendlineEstimator from int64_t -> double conversion (patchset #7 id:120001 of https://codereview.webrtc.org/2577463002/ )
Reason for revert:
Multiple definitions of TestEstimator

Original issue's description:
> Avoid precision loss in TrendlineEstimator by passing the arrival time as an int64_t instead of a double.
>
> BUG=webrtc:6884
>
> Committed: https://crrev.com/c12cbaf9dd0729dd45f3fc45a1938d1b3455e40a
> Cr-Commit-Position: refs/heads/master@{#15631}

TBR=stefan@webrtc.org,brandtr@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:6884

Review-Url: https://codereview.webrtc.org/2582513002
Cr-Commit-Position: refs/heads/master@{#15636}
2016-12-15 14:42:50 +00:00
0bac07a89b Revert of Avoid precision loss in MedianSlopeEstimator from int64_t -> double conversion (patchset #3 id:40001 of https://codereview.webrtc.org/2578543002/ )
Reason for revert:
Multiple definitions of TestEstimator

Original issue's description:
> Pass arrival time as an int64_t rather than a double to the MedianSlopeEstimator to avoid precision loss.
>
> Also clean up the unit test.
>
> BUG=webrtc:6892
>
> Committed: https://crrev.com/ebcbcc3b2451f5c4fb07f7b37815bd54f364d057
> Cr-Commit-Position: refs/heads/master@{#15634}

TBR=brandtr@webrtc.org,stefan@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:6892

Review-Url: https://codereview.webrtc.org/2572353003
Cr-Commit-Position: refs/heads/master@{#15635}
2016-12-15 14:41:43 +00:00
ebcbcc3b24 Pass arrival time as an int64_t rather than a double to the MedianSlopeEstimator to avoid precision loss.
Also clean up the unit test.

BUG=webrtc:6892

Review-Url: https://codereview.webrtc.org/2578543002
Cr-Commit-Position: refs/heads/master@{#15634}
2016-12-15 14:31:23 +00:00
c12cbaf9dd Avoid precision loss in TrendlineEstimator by passing the arrival time as an int64_t instead of a double.
BUG=webrtc:6884

Review-Url: https://codereview.webrtc.org/2577463002
Cr-Commit-Position: refs/heads/master@{#15631}
2016-12-15 14:20:03 +00:00
4f19b2fe09 Add OWNERS to BWE modules.
BUG=None

Review-Url: https://codereview.webrtc.org/2556703002
Cr-Commit-Position: refs/heads/master@{#15550}
2016-12-12 15:53:39 +00:00
5a388368a2 Implement Theil-Sen's method for fitting a line to noisy data (used in bandwidth estimation).
Theil and Sen's estimator essentially looks at the line through every pair of points and selects the median slope. This is robust to corruption of up to 29% of the data points.

Wire up new estimator to field trial experiment. Add unit and integration tests. Results are promising.

BUG=webrtc:6728

Review-Url: https://codereview.webrtc.org/2512693002
Cr-Commit-Position: refs/heads/master@{#15508}
2016-12-09 13:50:08 +00:00
7aa9b910ff Fix issue with deprecated CongestionController interface not working.
BUG=b/33446014

Review-Url: https://codereview.webrtc.org/2565503002
Cr-Commit-Position: refs/heads/master@{#15491}
2016-12-08 20:21:48 +00:00
7dada5e4c0 Delete deprecated CongestionController constructor and packet_router method.
This is a followup to https://codereview.webrtc.org/2516983004/, to be
landed after downstream projects are updated.

BUG=webrtc:6847

Review-Url: https://codereview.webrtc.org/2548633003
Cr-Commit-Position: refs/heads/master@{#15484}
2016-12-08 15:49:08 +00:00
10daf861b9 Simplify an always true condition.
Also deletes one call to CongestionController::pacer.

BUG=None

Review-Url: https://codereview.webrtc.org/2542113003
Cr-Commit-Position: refs/heads/master@{#15479}
2016-12-08 14:24:35 +00:00
9cef11b75e Fix exponential probing in ProbeController.
https://codereview.webrtc.org/2504023002 broke exponential probing.
After that change ProbeController stops exponential probes prematurely:
it goes to kProbingComplete state if SetEstimatedBitrate() is called
with bitrate lower than min_bitrate_to_probe_further_bps_, which always
happens with the first pair of probes. As result it wasn't sending
repeated probes as it should. This change fixes that issue by moving
probe expieration logic to ProbeContoller::Process(). This also ensures
that the controller goes to kProbingComplete state as soon as probing
timeout expired, without waiting for the next SetEstimatedBitrate()
call.

BUG=669421

Review-Url: https://codereview.webrtc.org/2546613003
Cr-Commit-Position: refs/heads/master@{#15392}
2016-12-02 19:03:08 +00:00
78b4d56535 Relanding "Pass time constant to bwe smoothing filter."
An earlier attempt to land this was in https://codereview.webrtc.org/2518923003/

It was failed because it removed an API. This CL fixes this.

BUG=webrtc:6443, webrtc:6303

Review-Url: https://codereview.webrtc.org/2536753002
Cr-Commit-Position: refs/heads/master@{#15325}
2016-11-30 12:47:47 +00:00
0245da0fa0 Move ownership of PacketRouter from CongestionController to Call.
And delete the method CongestionController::packet_router.

BUG=None

Review-Url: https://codereview.webrtc.org/2516983004
Cr-Commit-Position: refs/heads/master@{#15323}
2016-11-30 11:35:28 +00:00
06251f1955 Reduce ProbeController::kDefaultMaxProbingBitrateBps to 10 mbps.
BUG=none

Review-Url: https://codereview.webrtc.org/2535903003
Cr-Commit-Position: refs/heads/master@{#15322}
2016-11-30 10:48:46 +00:00
80ed35e21c Implement periodic bandwidth probing in application-limited region.
Now ProbeController can send periodic bandwidth probes when in
application-limited region. This will allow to maintain correct
bottleneck bandwidth estimate, even not all bandwidth is being used.
The feature is not enabled by default, but can be enabled with a flag.
Interval between probes is currently set to 5 seconds.

BUG=webrtc:6332

Review-Url: https://codereview.webrtc.org/2504023002
Cr-Commit-Position: refs/heads/master@{#15279}
2016-11-28 21:11:24 +00:00
6287e82b9b Revert of Pass time constant to bwe smoothing filter. (patchset #8 id:140001 of https://codereview.webrtc.org/2518923003/ )
Reason for revert:
Unfortunately, this change breaks internal projects. Specifically the change to the CongestionController interface means anything implementing it will be forced to change in lock-step.

Original issue's description:
> Pass time constanct to bwe smoothing filter.
>
> BUG=webrtc:6443, webrtc:6303
>
> Committed: https://crrev.com/9abbf5ae4ec7d688a9b4aa03a405f3faadb74b90
> Cr-Commit-Position: refs/heads/master@{#15266}

TBR=minyue@webrtc.org,stefan@webrtc.org,solenberg@webrtc.org,michaelt@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:6443, webrtc:6303

Review-Url: https://codereview.webrtc.org/2532993002
Cr-Commit-Position: refs/heads/master@{#15272}
2016-11-28 16:05:23 +00:00
9abbf5ae4e Pass time constanct to bwe smoothing filter.
BUG=webrtc:6443, webrtc:6303

Review-Url: https://codereview.webrtc.org/2518923003
Cr-Commit-Position: refs/heads/master@{#15266}
2016-11-28 15:00:24 +00:00
e2b1501101 Start probes only after network is connected.
Previously ProbeController was starting probing as soon as SetBitrates()
is called. As result these probes would often timeout while connection
is being established. Now ProbeController receives notifications about
network route changes. This allows to start probing only when transport
is connected. This also makes it possible to restart probing whenever
transport route changes (will be done in a separate change).

BUG=webrtc:6332
R=honghaiz@webrtc.org, philipel@webrtc.org, stefan@webrtc.org

Review URL: https://codereview.webrtc.org/2458863002 .

Committed: https://crrev.com/5c99c76255ee7bface3c742c25fb5617748ac86e
Cr-Original-Commit-Position: refs/heads/master@{#15094}
Cr-Commit-Position: refs/heads/master@{#15204}
2016-11-23 00:08:37 +00:00
afaef8bbeb Add a new overuse estimator for the delay based BWE behind experiment.
Parse the estimation parameters from the field trial string.

BUG=webrtc:6690

Review-Url: https://codereview.webrtc.org/2489323002
Cr-Commit-Position: refs/heads/master@{#15126}
2016-11-17 11:48:23 +00:00
4a4b3cfc01 Add interval estimator to remote bitrate estimator.
To be able to smooth the bandwidth estimation according to the probing interval.

BUG=webrtc:6443

Review-Url: https://codereview.webrtc.org/2380883003
Cr-Commit-Position: refs/heads/master@{#15123}
2016-11-17 09:19:00 +00:00
b4af3d673a Remove all references to GYP
Remove all .gyp and .gypi files.
Remove entries from OWNERS files for *.isolate, *.gyp, *.gypi
Remove unused scripts in webrtc/build.

BUG=webrtc:6323
R=henrika@webrtc.org, phoglund@webrtc.org

Review URL: https://codereview.webrtc.org/2509703002 .

Cr-Commit-Position: refs/heads/master@{#15107}
2016-11-16 19:11:38 +00:00
906c5dc6b7 Revert of Start probes only after network is connected. (patchset #9 id:240001 of https://codereview.webrtc.org/2458863002/ )
Reason for revert:
It broke downstream test.

Original issue's description:
> Start probes only after network is connected.
>
> Previously ProbeController was starting probing as soon as SetBitrates()
> is called. As result these probes would often timeout while connection
> is being established. Now ProbeController receives notifications about
> network route changes. This allows to start probing only when transport
> is connected. This also makes it possible to restart probing whenever
> transport route changes (will be done in a separate change).
>
> BUG=webrtc:6332
>
> Committed: https://crrev.com/5c99c76255ee7bface3c742c25fb5617748ac86e
> Cr-Commit-Position: refs/heads/master@{#15094}

TBR=philipel@webrtc.org,stefan@webrtc.org,sergeyu@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:6332

Review-Url: https://codereview.webrtc.org/2504783002
Cr-Commit-Position: refs/heads/master@{#15098}
2016-11-15 22:39:09 +00:00
5c99c76255 Start probes only after network is connected.
Previously ProbeController was starting probing as soon as SetBitrates()
is called. As result these probes would often timeout while connection
is being established. Now ProbeController receives notifications about
network route changes. This allows to start probing only when transport
is connected. This also makes it possible to restart probing whenever
transport route changes (will be done in a separate change).

BUG=webrtc:6332

Review-Url: https://codereview.webrtc.org/2458863002
Cr-Commit-Position: refs/heads/master@{#15094}
2016-11-15 20:25:37 +00:00
8927b0596c Reland of "Change TWCC send interval to reduce overhead on low BW situations."
"Change TWCC send interval to reduce overhead on low BW situations." was first committed in https://codereview.webrtc.org/2381833003/

but was reverted in https://codereview.webrtc.org/2468413009/ due to "float-cast-overflow".

BUG=webrtc:6442, webrtc:6669

Review-Url: https://codereview.webrtc.org/2482823002
Cr-Commit-Position: refs/heads/master@{#14954}
2016-11-07 15:51:27 +00:00
f082c2aa8d Set min BWE bitrate form 10kbps to 5kbps and centralize minimum bitrate.
BUG=webrtc:6522

Review-Url: https://codereview.webrtc.org/2415543002
Cr-Commit-Position: refs/heads/master@{#14947}
2016-11-07 12:17:19 +00:00
c97d1150f2 Delete unneeded includes.
BUG=None

Review-Url: https://codereview.webrtc.org/2467013003
Cr-Commit-Position: refs/heads/master@{#14939}
2016-11-07 09:28:03 +00:00
3326d0ac82 Revert of Change TWCC send interval to reduce overhead on low BW situations. (patchset #10 id:200001 of https://codereview.webrtc.org/2381833003/ )
Reason for revert:
Breaks internal tests.

Original issue's description:
> Change TWCC send interval to reduce overhead on low BW situations.
>
> BUG=webrtc:6442
>
> Committed: https://crrev.com/861e9374640eaa37ba5d905e3e0971df04b4fc9e
> Cr-Commit-Position: refs/heads/master@{#14910}

TBR=minyue@webrtc.org,stefan@webrtc.org,michaelt@webrtc.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=webrtc:6442

Review-Url: https://codereview.webrtc.org/2468413009
Cr-Commit-Position: refs/heads/master@{#14933}
2016-11-04 16:48:50 +00:00
07c147d25d Cap probing bitrate by the max bitrate instead of hardcoded 10Mbps.
Previously probing bitrate was capped at 10Mbps, which is too low for some
application. Now ProbeContoller limits max probing rate to max allowed
bitrate, which can be specified by the application.

BUG=webrtc:6332

Review-Url: https://codereview.webrtc.org/2430133005
Cr-Commit-Position: refs/heads/master@{#14927}
2016-11-03 18:59:57 +00:00
861e937464 Change TWCC send interval to reduce overhead on low BW situations.
BUG=webrtc:6442

Review-Url: https://codereview.webrtc.org/2381833003
Cr-Commit-Position: refs/heads/master@{#14910}
2016-11-03 13:02:21 +00:00
492ee28b73 Use bayesian estimate of acked bitrate.
This helps a lot to avoid reducing the bitrate too quickly when there's a short period of very few packets delivered, followed by the rate resuming at the regular rate. It specifically avoids the BWE going down to super low values as a response delay spikes.

BUG=webrtc:6566
R=terelius@webrtc.org

Review URL: https://codereview.webrtc.org/2422063002 .

Cr-Commit-Position: refs/heads/master@{#14802}
2016-10-27 15:19:34 +00:00
2d81eb33f5 Fix BWE simulations so that it uses the delay based BWE.
Rename kFullSendSideEstimator -> kSendSideEstimator and add new class SendSideBweSender (controlled by kSendSideEstimator) that actually uses the send side BWE.

Move the mock to logging/rtc_event_log/mock.
Allow congestion_controller, remote_bitrate_estimator and audio to depend on loggging/rtc_event_log

BUG=webrtc:6526
NOPRESUBMIT=True

Review-Url: https://codereview.webrtc.org/2431093003
Cr-Commit-Position: refs/heads/master@{#14772}
2016-10-25 14:04:44 +00:00
2206c959f1 Revert of Fix some chromium style warnings in remote_bitrate_estimator.h (patchset #1 id:1 of https://codereview.webrtc.org/2387113008/ )
Reason for revert:
Broke internal project.

Original issue's description:
> Fix some chromium style warnings in remote_bitrate_estimator.h
>
> BUG=webrtc:163
>
> Committed: https://crrev.com/c22bcf4f4bed1f05b5e59127f93b58129cd2627f
> Cr-Commit-Position: refs/heads/master@{#14737}

TBR=stefan@webrtc.org,kjellander@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:163

Review-Url: https://codereview.webrtc.org/2444923002
Cr-Commit-Position: refs/heads/master@{#14743}
2016-10-24 13:43:32 +00:00