clock: Make linear regression x/y base start from maximum observation.
authorJan Schmidt <jan@centricular.com>
Thu, 5 Feb 2015 11:55:39 +0000 (22:55 +1100)
committerJan Schmidt <jan@centricular.com>
Fri, 6 Feb 2015 17:38:39 +0000 (04:38 +1100)
Project the results of the linear regression to the end of the
regression range, so they're more directly comparable to results
going forward

gst/gstclock-linreg.c

index 2164a9f..874917f 100644 (file)
@@ -217,8 +217,11 @@ _priv_gst_do_linear_regression (GstClockTime * times, guint n,
 
   *m_num = sxy;
   *m_denom = sxx;
-  *xbase = xmin;
-  *b = (ybar + ymin) - gst_util_uint64_scale (xbar, *m_num, *m_denom);
+  *b = (ymin + ybar) - gst_util_uint64_scale (xbar, *m_num, *m_denom);
+  /* Report base starting from the most recent observation */
+  *xbase = xmax;
+  *b += gst_util_uint64_scale (xmax - xmin, *m_num, *m_denom);
+
   *r_squared = ((double) sxy * (double) sxy) / ((double) sxx * (double) syy);
 
 #ifdef DEBUGGING_ENABLED