diff --git a/modules/video_coding/timing/BUILD.gn b/modules/video_coding/timing/BUILD.gn index 857d27ce2d..8784ff9445 100644 --- a/modules/video_coding/timing/BUILD.gn +++ b/modules/video_coding/timing/BUILD.gn @@ -30,10 +30,10 @@ rtc_library("inter_frame_delay") { absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] } -rtc_library("frame_delay_delta_kalman_filter") { +rtc_library("frame_delay_variation_kalman_filter") { sources = [ - "frame_delay_delta_kalman_filter.cc", - "frame_delay_delta_kalman_filter.h", + "frame_delay_variation_kalman_filter.cc", + "frame_delay_variation_kalman_filter.h", ] deps = [ "../../../api/units:data_size", @@ -51,7 +51,7 @@ rtc_library("jitter_estimator") { "jitter_estimator.h", ] deps = [ - ":frame_delay_delta_kalman_filter", + ":frame_delay_variation_kalman_filter", ":rtt_filter", "../../../api:field_trials_view", "../../../api/units:data_size", @@ -102,14 +102,14 @@ rtc_library("timing_module") { rtc_library("timing_unittests") { testonly = true sources = [ - "frame_delay_delta_kalman_filter_unittest.cc", + "frame_delay_variation_kalman_filter_unittest.cc", "inter_frame_delay_unittest.cc", "jitter_estimator_unittest.cc", "rtt_filter_unittest.cc", "timing_unittest.cc", ] deps = [ - ":frame_delay_delta_kalman_filter", + ":frame_delay_variation_kalman_filter", ":inter_frame_delay", ":jitter_estimator", ":rtt_filter", diff --git a/modules/video_coding/timing/frame_delay_delta_kalman_filter.cc b/modules/video_coding/timing/frame_delay_variation_kalman_filter.cc similarity index 93% rename from modules/video_coding/timing/frame_delay_delta_kalman_filter.cc rename to modules/video_coding/timing/frame_delay_variation_kalman_filter.cc index 8e87d3cfcd..ec6aa3445a 100644 --- a/modules/video_coding/timing/frame_delay_delta_kalman_filter.cc +++ b/modules/video_coding/timing/frame_delay_variation_kalman_filter.cc @@ -8,7 +8,7 @@ * be found in the AUTHORS file in the root of the source tree. */ -#include "modules/video_coding/timing/frame_delay_delta_kalman_filter.h" +#include "modules/video_coding/timing/frame_delay_variation_kalman_filter.h" #include "api/units/data_size.h" #include "api/units/time_delta.h" @@ -18,9 +18,9 @@ namespace webrtc { namespace { // TODO(brandtr): The value below corresponds to 8 Gbps. Is that reasonable? constexpr double kMaxBandwidth = 0.000001; // Unit: [1 / bytes per ms]. -} +} // namespace -FrameDelayDeltaKalmanFilter::FrameDelayDeltaKalmanFilter() { +FrameDelayVariationKalmanFilter::FrameDelayVariationKalmanFilter() { // TODO(brandtr): Is there a factor 1000 missing here? estimate_[0] = 1 / (512e3 / 8); // Unit: [1 / bytes per ms] estimate_[1] = 0; // Unit: [ms] @@ -35,7 +35,7 @@ FrameDelayDeltaKalmanFilter::FrameDelayDeltaKalmanFilter() { process_noise_cov_diag_[1] = 1e-10; // Unit: [ms^2] } -void FrameDelayDeltaKalmanFilter::PredictAndUpdate( +void FrameDelayVariationKalmanFilter::PredictAndUpdate( double frame_delay_variation_ms, double frame_size_variation_bytes, double max_frame_size_bytes, @@ -131,13 +131,13 @@ void FrameDelayDeltaKalmanFilter::PredictAndUpdate( estimate_cov_[0][0] >= 0); } -double FrameDelayDeltaKalmanFilter::GetFrameDelayVariationEstimateSizeBased( +double FrameDelayVariationKalmanFilter::GetFrameDelayVariationEstimateSizeBased( double frame_size_variation_bytes) const { // Unit: [1 / bytes per millisecond] * [bytes] = [milliseconds]. return estimate_[0] * frame_size_variation_bytes; } -double FrameDelayDeltaKalmanFilter::GetFrameDelayVariationEstimateTotal( +double FrameDelayVariationKalmanFilter::GetFrameDelayVariationEstimateTotal( double frame_size_variation_bytes) const { double frame_transmission_delay_ms = GetFrameDelayVariationEstimateSizeBased(frame_size_variation_bytes); diff --git a/modules/video_coding/timing/frame_delay_delta_kalman_filter.h b/modules/video_coding/timing/frame_delay_variation_kalman_filter.h similarity index 92% rename from modules/video_coding/timing/frame_delay_delta_kalman_filter.h rename to modules/video_coding/timing/frame_delay_variation_kalman_filter.h index 9180349908..a65ceefa10 100644 --- a/modules/video_coding/timing/frame_delay_delta_kalman_filter.h +++ b/modules/video_coding/timing/frame_delay_variation_kalman_filter.h @@ -8,8 +8,8 @@ * be found in the AUTHORS file in the root of the source tree. */ -#ifndef MODULES_VIDEO_CODING_TIMING_FRAME_DELAY_DELTA_KALMAN_FILTER_H_ -#define MODULES_VIDEO_CODING_TIMING_FRAME_DELAY_DELTA_KALMAN_FILTER_H_ +#ifndef MODULES_VIDEO_CODING_TIMING_FRAME_DELAY_VARIATION_KALMAN_FILTER_H_ +#define MODULES_VIDEO_CODING_TIMING_FRAME_DELAY_VARIATION_KALMAN_FILTER_H_ #include "api/units/data_size.h" #include "api/units/time_delta.h" @@ -51,10 +51,10 @@ namespace webrtc { // [(1 / bytes per ms)^2, ms^2]. // * The observation noise covariance (`r`) is a scalar [ms^2] that is // determined externally to this class. -class FrameDelayDeltaKalmanFilter { +class FrameDelayVariationKalmanFilter { public: - FrameDelayDeltaKalmanFilter(); - ~FrameDelayDeltaKalmanFilter() = default; + FrameDelayVariationKalmanFilter(); + ~FrameDelayVariationKalmanFilter() = default; // Predicts and updates the filter, given a new pair of frame delay variation // and frame size variation. @@ -103,4 +103,4 @@ class FrameDelayDeltaKalmanFilter { } // namespace webrtc -#endif // MODULES_VIDEO_CODING_TIMING_FRAME_DELAY_DELTA_KALMAN_FILTER_H_ +#endif // MODULES_VIDEO_CODING_TIMING_FRAME_DELAY_VARIATION_KALMAN_FILTER_H_ diff --git a/modules/video_coding/timing/frame_delay_delta_kalman_filter_unittest.cc b/modules/video_coding/timing/frame_delay_variation_kalman_filter_unittest.cc similarity index 90% rename from modules/video_coding/timing/frame_delay_delta_kalman_filter_unittest.cc rename to modules/video_coding/timing/frame_delay_variation_kalman_filter_unittest.cc index ecbbc643ba..6103f3a1bc 100644 --- a/modules/video_coding/timing/frame_delay_delta_kalman_filter_unittest.cc +++ b/modules/video_coding/timing/frame_delay_variation_kalman_filter_unittest.cc @@ -8,7 +8,7 @@ * be found in the AUTHORS file in the root of the source tree. */ -#include "modules/video_coding/timing/frame_delay_delta_kalman_filter.h" +#include "modules/video_coding/timing/frame_delay_variation_kalman_filter.h" #include "test/gtest.h" @@ -18,9 +18,9 @@ namespace { // This test verifies that the initial filter state (link bandwidth, link // propagation delay) is such that a frame of size zero would take no time to // propagate. -TEST(FrameDelayDeltaKalmanFilterTest, +TEST(FrameDelayVariationKalmanFilterTest, InitializedFilterWithZeroSizeFrameTakesNoTimeToPropagate) { - FrameDelayDeltaKalmanFilter filter; + FrameDelayVariationKalmanFilter filter; // A zero-sized frame... double frame_size_variation_bytes = 0.0; @@ -38,9 +38,9 @@ TEST(FrameDelayDeltaKalmanFilterTest, // TODO(brandtr): Look into if there is a factor 1000 missing here? It seems // unreasonable to have an initial link bandwidth of 512 _mega_bits per second? -TEST(FrameDelayDeltaKalmanFilterTest, +TEST(FrameDelayVariationKalmanFilterTest, InitializedFilterWithSmallSizeFrameTakesFixedTimeToPropagate) { - FrameDelayDeltaKalmanFilter filter; + FrameDelayVariationKalmanFilter filter; // A 1000-byte frame... double frame_size_variation_bytes = 1000.0; @@ -55,9 +55,9 @@ TEST(FrameDelayDeltaKalmanFilterTest, expected_frame_delay_variation_estimate_ms); } -TEST(FrameDelayDeltaKalmanFilterTest, +TEST(FrameDelayVariationKalmanFilterTest, NegativeNoiseVarianceDoesNotUpdateFilter) { - FrameDelayDeltaKalmanFilter filter; + FrameDelayVariationKalmanFilter filter; // Negative variance... double var_noise = -0.1; @@ -82,9 +82,9 @@ TEST(FrameDelayDeltaKalmanFilterTest, 0.0); } -TEST(FrameDelayDeltaKalmanFilterTest, +TEST(FrameDelayVariationKalmanFilterTest, VerifyConvergenceWithAlternatingDeviations) { - FrameDelayDeltaKalmanFilter filter; + FrameDelayVariationKalmanFilter filter; // One frame every 33 ms. int framerate_fps = 30; diff --git a/modules/video_coding/timing/jitter_estimator.cc b/modules/video_coding/timing/jitter_estimator.cc index a6cb4efe52..261774cbd1 100644 --- a/modules/video_coding/timing/jitter_estimator.cc +++ b/modules/video_coding/timing/jitter_estimator.cc @@ -79,7 +79,7 @@ void JitterEstimator::Reset() { rtt_filter_.Reset(); fps_counter_.Reset(); - kalman_filter_ = FrameDelayDeltaKalmanFilter(); + kalman_filter_ = FrameDelayVariationKalmanFilter(); } // Updates the estimates with the new measurements. diff --git a/modules/video_coding/timing/jitter_estimator.h b/modules/video_coding/timing/jitter_estimator.h index 2362409d71..b8fe3075ae 100644 --- a/modules/video_coding/timing/jitter_estimator.h +++ b/modules/video_coding/timing/jitter_estimator.h @@ -17,7 +17,7 @@ #include "api/units/frequency.h" #include "api/units/time_delta.h" #include "api/units/timestamp.h" -#include "modules/video_coding/timing/frame_delay_delta_kalman_filter.h" +#include "modules/video_coding/timing/frame_delay_variation_kalman_filter.h" #include "modules/video_coding/timing/rtt_filter.h" #include "rtc_base/rolling_accumulator.h" @@ -90,7 +90,7 @@ class JitterEstimator { // Filters the {frame_delay_delta, frame_size_delta} measurements through // a linear Kalman filter. - FrameDelayDeltaKalmanFilter kalman_filter_; + FrameDelayVariationKalmanFilter kalman_filter_; // TODO(bugs.webrtc.org/14381): Update `avg_frame_size_bytes_` to DataSize // when api/units have sufficient precision.