Add PeerConnection option to configure minimum audio jitter buffer delay.

Note that this value will override the minimum delay that is used for audio/video sync.

Bug: webrtc:10053
Change-Id: Ia129f6c9ee9da5d00a3d955afaaa6e8f0c2bee33
Reviewed-on: https://webrtc-review.googlesource.com/c/112121
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Ivo Creusen <ivoc@webrtc.org>
Commit-Queue: Jakob Ivarsson‎ <jakobi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25805}
This commit is contained in:
Jakob Ivarsson
2018-11-27 15:45:20 +01:00
committed by Commit Bot
parent c7f1a0af92
commit 10403ae87c
18 changed files with 66 additions and 13 deletions

View File

@ -62,6 +62,7 @@ absl::optional<int> GetForcedLimitProbability() {
namespace webrtc {
DelayManager::DelayManager(size_t max_packets_in_buffer,
int base_min_target_delay_ms,
DelayPeakDetector* peak_detector,
const TickTimer* tick_timer)
: first_packet_received_(false),
@ -69,13 +70,14 @@ DelayManager::DelayManager(size_t max_packets_in_buffer,
iat_vector_(kMaxIat + 1, 0),
iat_factor_(0),
tick_timer_(tick_timer),
base_min_target_delay_ms_(base_min_target_delay_ms),
base_target_level_(4), // In Q0 domain.
target_level_(base_target_level_ << 8), // In Q8 domain.
packet_len_ms_(0),
streaming_mode_(false),
last_seq_no_(0),
last_timestamp_(0),
minimum_delay_ms_(0),
minimum_delay_ms_(base_min_target_delay_ms_),
maximum_delay_ms_(target_level_),
iat_cumulative_sum_(0),
max_iat_cumulative_sum_(0),
@ -85,6 +87,8 @@ DelayManager::DelayManager(size_t max_packets_in_buffer,
field_trial::IsEnabled("WebRTC-Audio-NetEqFramelengthExperiment")),
forced_limit_probability_(GetForcedLimitProbability()) {
assert(peak_detector); // Should never be NULL.
RTC_DCHECK_GE(base_min_target_delay_ms_, 0);
RTC_DCHECK_LE(minimum_delay_ms_, maximum_delay_ms_);
Reset();
}
@ -485,7 +489,7 @@ bool DelayManager::SetMinimumDelay(int delay_ms) {
static_cast<int>(3 * max_packets_in_buffer_ * packet_len_ms_ / 4))) {
return false;
}
minimum_delay_ms_ = delay_ms;
minimum_delay_ms_ = std::max(delay_ms, base_min_target_delay_ms_);
return true;
}