timefilter: allow variable periods.
authorNicolas George <nicolas.george@normalesup.org>
Fri, 2 Mar 2012 10:49:27 +0000 (11:49 +0100)
committerNicolas George <nicolas.george@normalesup.org>
Mon, 5 Mar 2012 15:57:28 +0000 (16:57 +0100)
Initially found and designed by Michael Niedermayer.

libavdevice/timefilter.c

index 4b8a10c..8451466 100644 (file)
@@ -50,7 +50,7 @@ TimeFilter *ff_timefilter_new(double time_base,
     double o               = 2 * M_PI * bandwidth * period * time_base;
     self->clock_period     = time_base;
     self->feedback2_factor = qexpneg(M_SQRT2 * o);
-    self->feedback3_factor = qexpneg(o * o);
+    self->feedback3_factor = qexpneg(o * o) / period;
     return self;
 }
 
@@ -78,7 +78,7 @@ double ff_timefilter_update(TimeFilter *self, double system_time, double period)
 
         /// update loop
         self->cycle_time   += FFMAX(self->feedback2_factor, 1.0 / self->count) * loop_error;
-        self->clock_period += self->feedback3_factor * loop_error / period;
+        self->clock_period += self->feedback3_factor * loop_error;
     }
     return self->cycle_time;
 }