diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2009-03-06 00:09:14 +0000 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2009-03-06 00:09:14 +0000 |
commit | 08ffd3708bd15613e85e331b04c89fbde2054b30 (patch) | |
tree | 566ba900f4254f6649706275cda4ed93407177fc /libavformat/timefilter.c | |
parent | 28e947e458638aae240677b41905bc75bff725bd (diff) | |
download | ffmpeg-08ffd3708bd15613e85e331b04c89fbde2054b30.tar.gz |
Allow timespans to vary.
No change in performance if they do not vary.
Originally committed as revision 17840 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat/timefilter.c')
-rw-r--r-- | libavformat/timefilter.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/libavformat/timefilter.c b/libavformat/timefilter.c index 6fdc148d00..26d57c0617 100644 --- a/libavformat/timefilter.c +++ b/libavformat/timefilter.c @@ -34,10 +34,10 @@ struct TimeFilter { double integrator2_state; }; -TimeFilter * ff_timefilter_new(double period, double feedback2_factor, double feedback3_factor) +TimeFilter * ff_timefilter_new(double feedback2_factor, double feedback3_factor) { TimeFilter *self = av_mallocz(sizeof(TimeFilter)); - self->integrator2_state = period; + self->integrator2_state = 1.0; self->feedback2_factor = feedback2_factor; self->feedback3_factor = feedback3_factor; return self; @@ -53,20 +53,20 @@ void ff_timefilter_reset(TimeFilter *self) self->cycle_time = 0; } -void ff_timefilter_update(TimeFilter *self, double system_time) +void ff_timefilter_update(TimeFilter *self, double system_time, double period) { if (!self->cycle_time) { /// init loop self->cycle_time = system_time; } else { double loop_error; - self->cycle_time+= self->integrator2_state; + self->cycle_time+= self->integrator2_state * period; /// calculate loop error loop_error = system_time - self->cycle_time; /// update loop self->cycle_time += self->feedback2_factor * loop_error; - self->integrator2_state += self->feedback3_factor * loop_error; + self->integrator2_state += self->feedback3_factor * loop_error / period; } } |