39 Commits

Author SHA1 Message Date
Edward Lemur
c20978e581 Rename webrtc/base -> webrtc/rtc_base
NOPRESUBMIT=True # cpplint errors that aren't caused by this CL.
NOTRY=True
NOTREECHECKS=True
TBR=kwiberg@webrtc.org, kjellander@webrtc.org

Bug: webrtc:7634
Change-Id: I3cca0fbaa807b563c95979cccd6d1bec32055f36
Reviewed-on: https://chromium-review.googlesource.com/562156
Commit-Queue: Edward Lemur <ehmaldonado@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#18919}
2017-07-06 19:11:40 +00:00
terelius
a9521e248e Reduce send rate to 50% if overusing before we have an acknowledged bitrate.
Check TimeToReducefurther to avoid reducing too often.

BUG=webrtc:7884

Review-Url: https://codereview.webrtc.org/2954923003
Cr-Commit-Position: refs/heads/master@{#18888}
2017-07-04 11:52:58 +00:00
Henrik Kjellander
dca1e09db7 Revert "Update includes for webrtc/{base => rtc_base} rename (1/3)"
This reverts commit c8fa692ec44fd6ba4fa3d085ac3161a262fc18c5.

BUG=webrtc:7634
NOTRY=True
NOPRESUBMIT=True

Review-Url: https://codereview.webrtc.org/2964773002 .
Cr-Commit-Position: refs/heads/master@{#18872}
2017-07-01 14:42:25 +00:00
kjellander
c8fa692ec4 Update includes for webrtc/{base => rtc_base} rename (1/3)
I used a command like this to update the paths:
perl -pi -e "s/webrtc\/base/webrtc\/rtc_base/g" `find webrtc/rtc_base -name "*.cc" -o -name "*.h"`

The only manual edit is to add an include of webrtc/rtc_base/checks.h in
webrtc/modules/audio_device/android/opensles_common.h, which likely
was needed due to changed include paths due to 'git cl format'.

BUG=webrtc:7634
NOTRY=True
NOPRESUBMIT=True

Review-Url: https://codereview.webrtc.org/2969653002
Cr-Commit-Position: refs/heads/master@{#18871}
2017-06-30 21:02:00 +00:00
terelius
376473054c Only use 95% of the link capacity if the true link capacity is found by probing.
Dont do a normal AimdRateControlUpdate update after a probe. Only set result.updated if the bitrate estimate has changed.

BUG=webrtc:7866

Review-Url: https://codereview.webrtc.org/2949203002
Cr-Commit-Position: refs/heads/master@{#18785}
2017-06-27 14:50:31 +00:00
tschumim
3fae628094 Reland Refactored incoming bitrate estimator.
BUG=webrtc:7746

Review-Url: https://codereview.webrtc.org/2928913002
Cr-Commit-Position: refs/heads/master@{#18529}
2017-06-12 06:57:17 +00:00
tschumim
807736ef02 Revert of Refactored incoming bitrate estimator. (patchset #8 id:140001 of https://codereview.webrtc.org/2917873002/ )
Reason for revert:
Breaks Vice tests

Original issue's description:
> Refactored incoming bitrate estimator.
>
> BUG=webrtc:7746
>
> Review-Url: https://codereview.webrtc.org/2917873002
> Cr-Commit-Position: refs/heads/master@{#18478}
> Committed: 5fc8bf8b87

TBR=philipel@webrtc.org,terelius@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:7746

Review-Url: https://codereview.webrtc.org/2924243002
Cr-Commit-Position: refs/heads/master@{#18486}
2017-06-08 07:10:31 +00:00
tschumim
5fc8bf8b87 Refactored incoming bitrate estimator.
BUG=webrtc:7746

Review-Url: https://codereview.webrtc.org/2917873002
Cr-Commit-Position: refs/heads/master@{#18478}
2017-06-07 16:48:20 +00:00
michaelt
8490f8af21 Remove GetFeedbackInterval in sender side BWE.
And changed the minimum increase rate in |aimd_rate_control| to prevent the system from overusing on short twcc report send interval.

BUG=webrtc:6514

Review-Url: https://codereview.webrtc.org/2407143002
Cr-Commit-Position: refs/heads/master@{#17794}
2017-04-20 17:10:10 +00:00
terelius
6737045af1 Move BWE period calculation from ProbingIntervalEstimator to AimdRateControl.
Remove the ProbingIntervalEstimator and MockAimdRateControl.

BUG=webrtc:7441

Review-Url: https://codereview.webrtc.org/2789233005
Cr-Commit-Position: refs/heads/master@{#17769}
2017-04-19 16:15:04 +00:00
stefan
80fba25fc3 Fix crash when all acks in a feedback message arrive too late.
BUG=b/37279144

Review-Url: https://codereview.webrtc.org/2820353002
Cr-Commit-Position: refs/heads/master@{#17739}
2017-04-18 13:45:12 +00:00
stefan
76d9c9c382 Reland of Enable trendline experiment and bayesian bitrate estimator experiment by default.
TBR=terelius@webrtc.org

BUG=webrtc:6566, webrtc:7415

Review-Url: https://codereview.webrtc.org/2794753002
Cr-Commit-Position: refs/heads/master@{#17497}
2017-04-01 13:51:09 +00:00
lliuu
029f7cccf4 Revert of Enable trendline experiment and bayesian bitrate estimator experiment by default. (patchset #6 id:100001 of https://codereview.webrtc.org/2777333003/ )
Reason for revert:
API changes in webrtc/sdk/objc/Framework/Headers/WebRTC/RTCFieldTrials.h broke internal project

Original issue's description:
> Enable trendline experiment and bayesian bitrate estimator experiment by default.
>
> BUG=webrtc:6566, webrtc:7415
>
> Review-Url: https://codereview.webrtc.org/2777333003
> Cr-Commit-Position: refs/heads/master@{#17491}
> Committed: 27925de951

TBR=terelius@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:6566, webrtc:7415

Review-Url: https://codereview.webrtc.org/2791743002
Cr-Commit-Position: refs/heads/master@{#17495}
2017-03-31 21:17:42 +00:00
stefan
27925de951 Enable trendline experiment and bayesian bitrate estimator experiment by default.
BUG=webrtc:6566, webrtc:7415

Review-Url: https://codereview.webrtc.org/2777333003
Cr-Commit-Position: refs/heads/master@{#17491}
2017-03-31 14:38:06 +00:00
lliuu
7a3615b6b3 Revert of Enable the bayesian bitrate estimator by default. (patchset #5 id:80001 of https://codereview.webrtc.org/2749803002/ )
Reason for revert:
Looks like this has caused multiple Android webrtc perf build bot failures in RampUpTest.UpDownUpTransportSequenceNumberRtx

Original issue's description:
> Enable the bayesian bitrate estimator by default.
>
> BUG=webrtc:6566, webrtc:7415
>
> Review-Url: https://codereview.webrtc.org/2749803002
> Cr-Commit-Position: refs/heads/master@{#17475}
> Committed: c53a17f28e

TBR=terelius@webrtc.org,magjed@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:6566, webrtc:7415

Review-Url: https://codereview.webrtc.org/2786913003
Cr-Commit-Position: refs/heads/master@{#17476}
2017-03-30 17:36:53 +00:00
stefan
c53a17f28e Enable the bayesian bitrate estimator by default.
BUG=webrtc:6566, webrtc:7415

Review-Url: https://codereview.webrtc.org/2749803002
Cr-Commit-Position: refs/heads/master@{#17475}
2017-03-30 15:56:22 +00:00
philipel
b5feb2e025 Use pacing info in ProbeBitrateEstimator to validate probe results.
BUG=webrtc:6822

Review-Url: https://codereview.webrtc.org/2728553007
Cr-Commit-Position: refs/heads/master@{#17147}
2017-03-09 15:01:58 +00:00
philipel
8aadd50b96 Propagate packet pacing information to SendTimeHistory.
In order to not make this CL too large I have broken it down into at least two
steps. Previous CL: https://codereview.chromium.org/2628563003/

webrtc::PacedSender::Process                        <--- previous CL start here
webrtc::PacedSender::SendPacket
webrtc::PacketRouter::TimeToSendPacket
webrtc::ModuleRtpRtcpImpl::TimeToSendPacket         <--- previous CL end here, this Cl start here
webrtc::RTPSender::TimeToSendPacket
webrtc::RTPSender::PrepareAndSendPacket
webrtc::RTPSender::AddPacketToTransportFeedback
webrtc::TransportFeedbackAdapter::AddPacket
webrtc::SendTimeHistory::AddAndRemoveOld            <--- this CL end here

BUG=webrtc:6822

Review-Url: https://codereview.webrtc.org/2708873003
Cr-Commit-Position: refs/heads/master@{#16796}
2017-02-23 10:56:13 +00:00
philipel
c7bf32a110 Propagate packet pacing information to SenTimeHistory.
In order to not make this CL too large I have broken it down into at least two steps. In this CL we only propagate the pacing information part of the way:

webrtc::PacedSender::Process                        <--- propagate from here
webrtc::PacedSender::SendPacket
webrtc::PacketRouter::TimeToSendPacket
webrtc::ModuleRtpRtcpImpl::TimeToSendPacket         <--- to here
webrtc::RTPSender::TimeToSendPacket
webrtc::RTPSender::PrepareAndSendPacket
webrtc::RTPSender::AddPacketToTransportFeedback
webrtc::TransportFeedbackAdapter::AddPacket
webrtc::SendTimeHistory::AddAndRemoveOld            <--- goal is to propagte it here

BUG=webrtc:6822

Review-Url: https://codereview.webrtc.org/2628563003
Cr-Commit-Position: refs/heads/master@{#16664}
2017-02-17 11:59:43 +00:00
terelius
0baf55d23b Add logging of delay-based bandwidth estimate.
BUG=webrtc:6423

Review-Url: https://codereview.webrtc.org/2695923004
Cr-Commit-Position: refs/heads/master@{#16663}
2017-02-17 11:38:28 +00:00
stefan
f00497c573 Improve bitrate probing for the audio-only case.
This means that smaller probe packets will be allowed at lower bitrates.

BUG=webrtc:7043

Review-Url: https://codereview.webrtc.org/2650393002
Cr-Commit-Position: refs/heads/master@{#16317}
2017-01-27 10:27:33 +00:00
terelius
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
minyue
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
ossu
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
michaelt
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
terelius
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
michaelt
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
Stefan Holmer
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
Stefan Holmer
280de9e1c3 Reland: Fix race / crash in OnNetworkRouteChanged().
To achieve this some refactoring was done to make it possible to synchronize
access to the DelayBasedBwe in TransportFeedbackAdapter:
- The callback was removed from DelayBasedBwe, it now instead returns its
  result.
- TransportFeedbackAdapter was moved to modules/congestion_controller to avoid
  unnecessary dependencies.

Reenables previously disabled flaky test. Can no longer reproduce flakiness with gtest-parallel and asan/tsan builds.

BUG=webrtc:6427, webrtc:6422
R=terelius@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#14452}
2016-09-30 08:07:00 +00:00
stefan
5ec85fbcb7 Revert of Fix race / crash in OnNetworkRouteChanged(). (patchset #5 id:80001 of https://codereview.webrtc.org/2366333003/ )
Reason for revert:
Caused issues with webrtc_perf_tests on build bots.

Original issue's description:
> Fix race / crash in OnNetworkRouteChanged().
>
> To achieve this some refactoring was done to make it possible to synchronize
> access to the DelayBasedBwe in TransportFeedbackAdapter:
> - The callback was removed from DelayBasedBwe, it now instead returns its
>   result.
> - TransportFeedbackAdapter was moved to modules/congestion_controller to avoid
>   unnecessary dependencies.
>
> Reenables previously disabled flaky test. Can no longer reproduce flakiness with gtest-parallel and asan/tsan builds.
>
> BUG=webrtc:6427, webrtc:6422
>
> Committed: https://crrev.com/fd0d42669204e6dd92a60736bca7ae0196663024
> Cr-Commit-Position: refs/heads/master@{#14430}

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

Review-Url: https://codereview.webrtc.org/2377303002
Cr-Commit-Position: refs/heads/master@{#14433}
2016-09-29 11:19:42 +00:00
stefan
fd0d426692 Fix race / crash in OnNetworkRouteChanged().
To achieve this some refactoring was done to make it possible to synchronize
access to the DelayBasedBwe in TransportFeedbackAdapter:
- The callback was removed from DelayBasedBwe, it now instead returns its
  result.
- TransportFeedbackAdapter was moved to modules/congestion_controller to avoid
  unnecessary dependencies.

Reenables previously disabled flaky test. Can no longer reproduce flakiness with gtest-parallel and asan/tsan builds.

BUG=webrtc:6427, webrtc:6422

Review-Url: https://codereview.webrtc.org/2366333003
Cr-Commit-Position: refs/heads/master@{#14430}
2016-09-29 09:44:38 +00:00
kwiberg
77eab70470 Enable the -Wundef warning for clang
NOPRESUBMIT=true
BUG=webrtc:6398

Review-Url: https://codereview.webrtc.org/2358993004
Cr-Commit-Position: refs/heads/master@{#14425}
2016-09-29 00:42:08 +00:00
philipel
7522a28051 Removed old probe cluster logic and logic related to ssrcs from DelayBasedBwe.
-Removed the old probe cluster logic and use the new ProbeBitrateEstimator
 instead.
-Removed all logic related to ssrcs from DelayBasedBwe as they have no function
 on the sender side.

BUG=webrtc:5859
R=stefan@webrtc.org, terelius@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#13771}
2016-08-16 08:59:48 +00:00
stefan
db7543809e Tune BWE to be more sensitive on low capacity networks.
Also lowering the min bitrate for simulations to be able to better capture this issue in the BweFeedbackTest.Choke200kbps30kbps200kbps performance test.

BUG=webrtc:6105
NOTRY=true
NOPRESUBMIT=true

Review-Url: https://codereview.webrtc.org/2201093006
Cr-Commit-Position: refs/heads/master@{#13639}
2016-08-04 13:42:14 +00:00
stefan
5e12d36ba7 Reset InterArrival if arrival time clock makes a jump.
Also adds a copy of the BWE test suite to the new DelayBasedBwe class.

BUG=webrtc:6079

Review-Url: https://codereview.webrtc.org/2126793002
Cr-Commit-Position: refs/heads/master@{#13428}
2016-07-11 08:44:12 +00:00
pbos
2169d8bc68 Reland of move audio/video distinction for probe packets. (patchset #1 id:1 of https://codereview.webrtc.org/2086633002/ )
Reason for revert:
Fix already landed in google3, this revert actually breaks the import.

Original issue's description:
> Revert of Remove audio/video distinction for probe packets. (patchset #2 id:20001 of https://codereview.webrtc.org/2061193002/ )
>
> Reason for revert:
> Revert this because it broke the google3 import build.
> http://webrtc-buildbot-master.mtv.corp.google.com:21000/builders/WebRTC%20google3%20Importer%20%28Shem%20TOT%29/builds/67/steps/blaze_regular_tests/logs/stdio
>
> Original issue's description:
> > Remove audio/video distinction for probe packets.
> >
> > Allows detecting large-enough audio packets as part of a probe,
> > speculative fix for a rampup-time regression in M50. These packets are
> > accounted on the send side when probing.
> >
> > BUG=webrtc:5985
> > R=mflodman@webrtc.org, philipel@webrtc.org
> >
> > Committed: https://crrev.com/a7d88d38448f6a5677a017562765ab505b89d468
> > Cr-Commit-Position: refs/heads/master@{#13210}
>
> TBR=mflodman@webrtc.org,philipel@webrtc.org,pbos@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:5985
>
> Committed: https://crrev.com/17bde8c96ee8b5a7e496a7dc98828b84f9756925
> Cr-Commit-Position: refs/heads/master@{#13221}

TBR=mflodman@webrtc.org,philipel@webrtc.org,honghaiz@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:5985

Review-Url: https://codereview.webrtc.org/2085653002
Cr-Commit-Position: refs/heads/master@{#13223}
2016-06-20 18:53:09 +00:00
honghaiz
17bde8c96e Revert of Remove audio/video distinction for probe packets. (patchset #2 id:20001 of https://codereview.webrtc.org/2061193002/ )
Reason for revert:
Revert this because it broke the google3 import build.
http://webrtc-buildbot-master.mtv.corp.google.com:21000/builders/WebRTC%20google3%20Importer%20%28Shem%20TOT%29/builds/67/steps/blaze_regular_tests/logs/stdio

Original issue's description:
> Remove audio/video distinction for probe packets.
>
> Allows detecting large-enough audio packets as part of a probe,
> speculative fix for a rampup-time regression in M50. These packets are
> accounted on the send side when probing.
>
> BUG=webrtc:5985
> R=mflodman@webrtc.org, philipel@webrtc.org
>
> Committed: https://crrev.com/a7d88d38448f6a5677a017562765ab505b89d468
> Cr-Commit-Position: refs/heads/master@{#13210}

TBR=mflodman@webrtc.org,philipel@webrtc.org,pbos@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:5985

Review-Url: https://codereview.webrtc.org/2086633002
Cr-Commit-Position: refs/heads/master@{#13221}
2016-06-20 18:47:25 +00:00
Peter Boström
a7d88d3844 Remove audio/video distinction for probe packets.
Allows detecting large-enough audio packets as part of a probe,
speculative fix for a rampup-time regression in M50. These packets are
accounted on the send side when probing.

BUG=webrtc:5985
R=mflodman@webrtc.org, philipel@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#13210}
2016-06-20 08:51:20 +00:00
philipel
863a8264cc Use |probe_cluster_id| to cluster packets.
Introduced new class DelayBasedProbingEstimator which is a copy of
RemoteBitrateEstimatorAbsSendTime with only minor changes. This makes probing
more reliable but is still not usable for mid-call probing.

BUG=

Review-Url: https://codereview.webrtc.org/2038023002
Cr-Commit-Position: refs/heads/master@{#13195}
2016-06-17 16:21:43 +00:00