There are some functions in packet_router.cc and modules/congestion_controller that could be used by different threads, but they're protected using rtc::ThreadChecker which doesn't allow them to be called by more than one thread even if the calls are synchronised. This CL replaces those with rtc::RaceChecker, which allows serialized access of the functions from multiple threads.
BUG=webrtc:7826
Review-Url: https://codereview.webrtc.org/2940133003
Cr-Commit-Position: refs/heads/master@{#18628}
we currently check for bandwidth overuse once for every RTP packet.
This CL creates an experiment to test processing all packets in the RTCP
feedback before checking for overuse. This can be thought of as checking
for overuse per RTCP packet instead of per RTP packet.
The change is not expected to have a large impact, but enabling the
experiment will make the delay-based BWE slightly less sensitive. This means
that we'll be less likely to back down incorrectly after a brief network
transient, at the cost of sometimes missing real overuse (especially when
the network queues are short). In the latter case, the loss-based estimator
is expected to detect the overuse.
The experiment is off by default.
BUG=webrtc:7508
Review-Url: https://codereview.webrtc.org/2835573003
Cr-Commit-Position: refs/heads/master@{#17968}
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}
Remove the ProbingIntervalEstimator and MockAimdRateControl.
BUG=webrtc:7441
Review-Url: https://codereview.webrtc.org/2789233005
Cr-Commit-Position: refs/heads/master@{#17769}
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: c53a17f28eTBR=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}
Lateness is determined by the length of the send-side history, currently
set to 60 seconds.
BUG=webrtc:5079
Review-Url: https://codereview.webrtc.org/2684353004
Cr-Commit-Position: refs/heads/master@{#16588}
This avoids issues where the bitrate produced by the codec is far lower than the target bitrate in the beginning, which causes the delay-based BWE to be initialized accordingly.
BUG=webrtc:5079
Review-Url: https://codereview.webrtc.org/2653883002
Cr-Commit-Position: refs/heads/master@{#16327}
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}
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}
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}
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}
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}
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}
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}
-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}
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}
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}
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}