JitterEstimator: remove unnecessary helper functions
Move functionality to closer where the values are used instead, as per previous CL comment. Bug: webrtc:14151 Change-Id: I6b7ca02da197420a1f5da930ba87021e6f557444 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/275204 Commit-Queue: Rasmus Brandt <brandtr@webrtc.org> Reviewed-by: Philip Eliasson <philipel@webrtc.org> Cr-Commit-Position: refs/heads/main@{#38148}
This commit is contained in:
committed by
WebRTC LUCI CQ
parent
d795c8bd16
commit
2f650fa822
@ -243,7 +243,8 @@ void JitterEstimator::UpdateEstimate(TimeDelta frame_delay,
|
|||||||
// https://en.wikipedia.org/wiki/68-95-99.7_rule. Note that neither of the
|
// https://en.wikipedia.org/wiki/68-95-99.7_rule. Note that neither of the
|
||||||
// estimated means are true sample means, which implies that they are possibly
|
// estimated means are true sample means, which implies that they are possibly
|
||||||
// not normally distributed. Hence, this rejection method is just a heuristic.
|
// not normally distributed. Hence, this rejection method is just a heuristic.
|
||||||
double num_stddev_delay_outlier = GetNumStddevDelayOutlier();
|
double num_stddev_delay_outlier =
|
||||||
|
config_.num_stddev_delay_outlier.value_or(kNumStdDevDelayOutlier);
|
||||||
// Delay outlier rejection is two-sided.
|
// Delay outlier rejection is two-sided.
|
||||||
bool abs_delay_is_not_outlier =
|
bool abs_delay_is_not_outlier =
|
||||||
fabs(delay_deviation_ms) <
|
fabs(delay_deviation_ms) <
|
||||||
@ -253,10 +254,12 @@ void JitterEstimator::UpdateEstimate(TimeDelta frame_delay,
|
|||||||
// median-filtered version, even if configured to use latter for the
|
// median-filtered version, even if configured to use latter for the
|
||||||
// calculation in `CalculateEstimate()`.
|
// calculation in `CalculateEstimate()`.
|
||||||
// Size outlier rejection is one-sided.
|
// Size outlier rejection is one-sided.
|
||||||
|
double num_stddev_size_outlier =
|
||||||
|
config_.num_stddev_size_outlier.value_or(kNumStdDevSizeOutlier);
|
||||||
bool size_is_positive_outlier =
|
bool size_is_positive_outlier =
|
||||||
frame_size.bytes() >
|
frame_size.bytes() >
|
||||||
avg_frame_size_bytes_ +
|
avg_frame_size_bytes_ +
|
||||||
GetNumStddevSizeOutlier() * sqrt(var_frame_size_bytes2_);
|
num_stddev_size_outlier * sqrt(var_frame_size_bytes2_);
|
||||||
|
|
||||||
// Only update the Kalman filter if the sample is not considered an extreme
|
// Only update the Kalman filter if the sample is not considered an extreme
|
||||||
// outlier. Even if it is an extreme outlier from a delay point of view, if
|
// outlier. Even if it is an extreme outlier from a delay point of view, if
|
||||||
@ -269,13 +272,16 @@ void JitterEstimator::UpdateEstimate(TimeDelta frame_delay,
|
|||||||
// delayed. The next frame is of normal size (delta frame), and thus deltaFS
|
// delayed. The next frame is of normal size (delta frame), and thus deltaFS
|
||||||
// will be << 0. This removes all frame samples which arrives after a key
|
// will be << 0. This removes all frame samples which arrives after a key
|
||||||
// frame.
|
// frame.
|
||||||
|
double congestion_rejection_factor =
|
||||||
|
config_.congestion_rejection_factor.value_or(
|
||||||
|
kCongestionRejectionFactor);
|
||||||
double filtered_max_frame_size_bytes =
|
double filtered_max_frame_size_bytes =
|
||||||
config_.MaxFrameSizePercentileEnabled()
|
config_.MaxFrameSizePercentileEnabled()
|
||||||
? max_frame_size_bytes_percentile_.GetFilteredValue()
|
? max_frame_size_bytes_percentile_.GetFilteredValue()
|
||||||
: max_frame_size_bytes_;
|
: max_frame_size_bytes_;
|
||||||
bool is_not_congested =
|
bool is_not_congested =
|
||||||
delta_frame_bytes >
|
delta_frame_bytes >
|
||||||
GetCongestionRejectionFactor() * filtered_max_frame_size_bytes;
|
congestion_rejection_factor * filtered_max_frame_size_bytes;
|
||||||
|
|
||||||
if (is_not_congested || config_.estimate_noise_when_congested) {
|
if (is_not_congested || config_.estimate_noise_when_congested) {
|
||||||
// Update the variance of the deviation from the line given by the Kalman
|
// Update the variance of the deviation from the line given by the Kalman
|
||||||
@ -320,19 +326,6 @@ JitterEstimator::Config JitterEstimator::GetConfigForTest() const {
|
|||||||
return config_;
|
return config_;
|
||||||
}
|
}
|
||||||
|
|
||||||
double JitterEstimator::GetNumStddevDelayOutlier() const {
|
|
||||||
return config_.num_stddev_delay_outlier.value_or(kNumStdDevDelayOutlier);
|
|
||||||
}
|
|
||||||
|
|
||||||
double JitterEstimator::GetNumStddevSizeOutlier() const {
|
|
||||||
return config_.num_stddev_size_outlier.value_or(kNumStdDevSizeOutlier);
|
|
||||||
}
|
|
||||||
|
|
||||||
double JitterEstimator::GetCongestionRejectionFactor() const {
|
|
||||||
return config_.congestion_rejection_factor.value_or(
|
|
||||||
kCongestionRejectionFactor);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Estimates the random jitter by calculating the variance of the sample
|
// Estimates the random jitter by calculating the variance of the sample
|
||||||
// distance from the line given by the Kalman filter.
|
// distance from the line given by the Kalman filter.
|
||||||
void JitterEstimator::EstimateRandomJitter(double d_dT) {
|
void JitterEstimator::EstimateRandomJitter(double d_dT) {
|
||||||
|
|||||||
@ -143,11 +143,6 @@ class JitterEstimator {
|
|||||||
Config GetConfigForTest() const;
|
Config GetConfigForTest() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// These functions return values that could be overriden through the config.
|
|
||||||
double GetNumStddevDelayOutlier() const;
|
|
||||||
double GetNumStddevSizeOutlier() const;
|
|
||||||
double GetCongestionRejectionFactor() const;
|
|
||||||
|
|
||||||
// Updates the random jitter estimate, i.e. the variance of the time
|
// Updates the random jitter estimate, i.e. the variance of the time
|
||||||
// deviations from the line given by the Kalman filter.
|
// deviations from the line given by the Kalman filter.
|
||||||
//
|
//
|
||||||
|
|||||||
Reference in New Issue
Block a user