From 1856b2ce71700faceb9f3dd8dfe7f24e17987e57 Mon Sep 17 00:00:00 2001 From: Rasmus Brandt Date: Fri, 12 Aug 2022 14:01:31 +0200 Subject: [PATCH] Stop adding zeros for the off-diagonal components Bug: webrtc:14151 Change-Id: I58017cab911e642f457f665c5f4d1ff6d11d8571 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/271545 Commit-Queue: Rasmus Brandt Reviewed-by: Philip Eliasson Cr-Commit-Position: refs/heads/main@{#37768} --- .../timing/frame_delay_delta_kalman_filter.cc | 13 ++++--------- .../timing/frame_delay_delta_kalman_filter.h | 4 +++- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/modules/video_coding/timing/frame_delay_delta_kalman_filter.cc b/modules/video_coding/timing/frame_delay_delta_kalman_filter.cc index 967efa3296..0060c11629 100644 --- a/modules/video_coding/timing/frame_delay_delta_kalman_filter.cc +++ b/modules/video_coding/timing/frame_delay_delta_kalman_filter.cc @@ -30,11 +30,8 @@ FrameDelayDeltaKalmanFilter::FrameDelayDeltaKalmanFilter() { estimate_cov_[0][1] = estimate_cov_[1][0] = 0; // Process noise covariance. - process_noise_cov_[0][0] = 2.5e-10; // Unit: [(1 / bytes per ms)^2] - process_noise_cov_[1][1] = 1e-10; // Unit: [ms^2] - // TODO(brandtr): Remove, since matrix is always diagonal. No need to multiply - // by zero, below. - process_noise_cov_[0][1] = process_noise_cov_[1][0] = 0; + process_noise_cov_diag_[0] = 2.5e-10; // Unit: [(1 / bytes per ms)^2] + process_noise_cov_diag_[1] = 1e-10; // Unit: [ms^2] } void FrameDelayDeltaKalmanFilter::PredictAndUpdate( @@ -48,10 +45,8 @@ void FrameDelayDeltaKalmanFilter::PredictAndUpdate( // 2) Estimate covariance prediction: This is done by simply adding the // process noise covariance, again since the state transition matrix is the // identity. - estimate_cov_[0][0] += process_noise_cov_[0][0]; - estimate_cov_[0][1] += process_noise_cov_[0][1]; // TODO(brandtr): Remove. - estimate_cov_[1][0] += process_noise_cov_[1][0]; - estimate_cov_[1][1] += process_noise_cov_[1][1]; // TODO(brandtr): Remove. + estimate_cov_[0][0] += process_noise_cov_diag_[0]; + estimate_cov_[1][1] += process_noise_cov_diag_[1]; // Measurement update. // TODO(brandtr): Reorganize the code below to follow the standard update diff --git a/modules/video_coding/timing/frame_delay_delta_kalman_filter.h b/modules/video_coding/timing/frame_delay_delta_kalman_filter.h index b23d19bdaf..b29a129669 100644 --- a/modules/video_coding/timing/frame_delay_delta_kalman_filter.h +++ b/modules/video_coding/timing/frame_delay_delta_kalman_filter.h @@ -91,7 +91,9 @@ class FrameDelayDeltaKalmanFilter { double estimate_[2]; double estimate_cov_[2][2]; // Estimate covariance. - double process_noise_cov_[2][2]; // Process noise covariance. + // Process noise covariance. This is a diagonal matrix, so we only store the + // diagonal entries. + double process_noise_cov_diag_[2]; }; } // namespace webrtc