Go to the documentation of this file.
43 return 1 - 1 / (1 + x * (1 + x / 2 * (1 + x / 3)));
51 double o = 2 *
M_PI * bandwidth *
period * time_base;
56 self->clock_period = time_base;
75 if (self->count == 1) {
76 self->cycle_time = system_time;
79 self->cycle_time +=
self->clock_period *
period;
80 loop_error = system_time -
self->cycle_time;
82 self->cycle_time +=
FFMAX(self->feedback2_factor, 1.0 / self->count) * loop_error;
83 self->clock_period +=
self->feedback3_factor * loop_error;
85 return self->cycle_time;
90 return self->cycle_time +
self->clock_period *
delta;
Opaque type representing a time filter state.
double ff_timefilter_eval(TimeFilter *self, double delta)
Evaluate the filter at a specified time.
TimeFilter * ff_timefilter_new(double time_base, double period, double bandwidth)
Create a new Delay Locked Loop time filter.
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf default minimum maximum flags name is the option keep it simple and lowercase description are in without period
void ff_timefilter_reset(TimeFilter *self)
Reset the filter.
void ff_timefilter_destroy(TimeFilter *self)
Free all resources associated with the filter.
void * av_mallocz(size_t size)
Allocate a memory block with alignment suitable for all memory accesses (including vectors if availab...
double ff_timefilter_update(TimeFilter *self, double system_time, double period)
Update the filter.
static double qexpneg(double x)