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}
This commit is contained in:
sergeyu
2016-11-28 13:11:13 -08:00
committed by Commit bot
parent bf22be902e
commit 80ed35e21c
15 changed files with 194 additions and 62 deletions

View File

@ -36,6 +36,9 @@ class ProbeController {
void SetEstimatedBitrate(int bitrate_bps);
void EnablePeriodicAlrProbing(bool enable);
void Process();
private:
enum class State {
// Initial state where no probing has been triggered yet.
@ -47,7 +50,8 @@ class ProbeController {
};
void InitiateExponentialProbing() EXCLUSIVE_LOCKS_REQUIRED(critsect_);
void InitiateProbing(std::initializer_list<int> bitrates_to_probe,
void InitiateProbing(int64_t now_ms,
std::initializer_list<int> bitrates_to_probe,
int min_bitrate_to_probe_further_bps)
EXCLUSIVE_LOCKS_REQUIRED(critsect_);
@ -62,6 +66,7 @@ class ProbeController {
int start_bitrate_bps_ GUARDED_BY(critsect_);
int max_bitrate_bps_ GUARDED_BY(critsect_);
int64_t last_alr_probing_time_ GUARDED_BY(critsect_);
bool enable_periodic_alr_probing_ GUARDED_BY(critsect_);
RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(ProbeController);
};