Adding field trial to force target level percentile in NetEQ.

Bug: webrtc:9822
Change-Id: I636f75de10851729825311ee5783e836f3b583cd
Reviewed-on: https://webrtc-review.googlesource.com/c/101220
Commit-Queue: Minyue Li <minyue@webrtc.org>
Reviewed-by: Henrik Lundin <henrik.lundin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24975}
This commit is contained in:
Minyue Li
2018-10-04 11:31:03 +02:00
committed by Commit Bot
parent 2ea9af2275
commit 002fbb8c7d
3 changed files with 111 additions and 15 deletions

View File

@ -16,6 +16,7 @@
#include <memory>
#include <vector>
#include "absl/types/optional.h"
#include "modules/audio_coding/neteq/tick_timer.h"
#include "rtc_base/constructormagic.h"
@ -114,16 +115,12 @@ class DelayManager {
virtual int last_pack_cng_or_dtmf() const;
virtual void set_last_pack_cng_or_dtmf(int value);
private:
static const int kLimitProbability = 53687091; // 1/20 in Q30.
static const int kLimitProbabilityStreaming = 536871; // 1/2000 in Q30.
static const int kMaxStreamingPeakPeriodMs = 600000; // 10 minutes in ms.
static const int kCumulativeSumDrift = 2; // Drift term for cumulative sum
// |iat_cumulative_sum_|.
// Steady-state forgetting factor for |iat_vector_|, 0.9993 in Q15.
static const int kIatFactor_ = 32745;
static const int kMaxIat = 64; // Max inter-arrival time to register.
// This accessor is only intended for testing purposes.
const absl::optional<int>& forced_limit_probability_for_test() const {
return forced_limit_probability_;
}
private:
// Sets |iat_vector_| to the default start distribution and sets the
// |base_target_level_| and |target_level_| to the corresponding values.
void ResetHistogram();
@ -168,6 +165,7 @@ class DelayManager {
DelayPeakDetector& peak_detector_;
int last_pack_cng_or_dtmf_;
const bool frame_length_change_experiment_;
const absl::optional<int> forced_limit_probability_;
RTC_DISALLOW_COPY_AND_ASSIGN(DelayManager);
};