Add DecelerationTargetLevelOffset Field Trial.

This change allows NetEq to reach preferred jitter buffer size much faster
for high target delays because it uses absolute units instead of relative ones
during computation of lower_limit.

More details can be found here:
https://docs.google.com/document/d/12qPMJYFhGXrA_o_nvz9VshpzAJX6aULxFig1fTzBzDI/edit

Change-Id: I21ce0e35e25166d935fdf0325c083bcf990899f5

Bug: webrtc:10619
Change-Id: I21ce0e35e25166d935fdf0325c083bcf990899f5
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/135745
Reviewed-by: Minyue Li <minyue@webrtc.org>
Reviewed-by: Jakob Ivarsson‎ <jakobi@webrtc.org>
Commit-Queue: Ruslan Burakov <kuddai@google.com>
Cr-Commit-Position: refs/heads/master@{#27970}
This commit is contained in:
Ruslan Burakov
2019-05-15 14:31:22 +02:00
committed by Commit Bot
parent 8e1a0080d3
commit 1e193faaf1
3 changed files with 152 additions and 9 deletions

View File

@ -101,6 +101,9 @@ class DelayManager {
// within to the corresponding pointers. The values are in (fractions of)
// packets in Q8.
virtual void BufferLimits(int* lower_limit, int* higher_limit) const;
virtual void BufferLimits(int target_level,
int* lower_limit,
int* higher_limit) const;
// Gets the target buffer level, in (fractions of) packets in Q8.
virtual int TargetLevel() const;
@ -130,6 +133,11 @@ class DelayManager {
}
// This accessor is only intended for testing purposes.
absl::optional<int> deceleration_target_level_offset_ms() const {
return deceleration_target_level_offset_ms_;
}
// These accessors are only intended for testing purposes.
HistogramMode histogram_mode() const { return histogram_mode_; }
int histogram_quantile() const { return histogram_quantile_; }
int histogram_forget_factor() const { return histogram_->forget_factor(); }
@ -196,6 +204,11 @@ class DelayManager {
const bool enable_rtx_handling_;
int num_reordered_packets_ = 0; // Number of consecutive reordered packets.
std::deque<int> delay_history_;
// When current buffer level is more than
// |deceleration_target_level_offset_ms_| below the target level, NetEq will
// impose deceleration to increase the buffer level. The value is in Q8, and
// measured in milliseconds.
const absl::optional<int> deceleration_target_level_offset_ms_;
RTC_DISALLOW_COPY_AND_ASSIGN(DelayManager);
};